2012-06-06 2 views

Répondre

4

En supposant que vous ne voulez pas utiliser des plugins comme THIS ONE ou THIS, vous avez plusieurs façons:

On est d'attribuer une catégorie pour les postes que vous souhaitez exclure et vous pouvez simplement modifier l'URL du lien RSS comme ceci:

http://www.mydomain.com/feed?cat=-x,-y,-z 

vous pouvez également filtrer avec une fonction:

function o99_my_rss_filter($query) { 
if ($query->is_feed) { 
$query->set('cat','-7'); //Put category ID - here it is : 7 
} 
return $query; 
} 

add_filter('pre_get_posts','o99_my_rss_filter'); 

Le point est que vous nE ed pour affecter SOMETHING (balise, champ personnalisé, catégorie) pour identifier ce qu'il faut exclure, en supposant que vous ne voulez pas toujours ajouter l'ID à exclure de la requête.

Le plus simple est par catégorie comme démontré ci-dessus.

* * Edit I **

Juste pour le plaisir de le - (je recommande toujours la méthode cetegory) r Même si je n'aime pas les champs-personnalisés quand ils sont galvaudé - c'est une autre façon modifier la requête en affectant un champ personnalisé:

function o99_my_rss_filter_by _field($where, $wp_query = NULL) { 
    global $wpdb; 

    if (!$wp_query) global $wp_query;if ($wp_query->is_feed) { 

     $posts = get_posts(array('meta_key' => 'norss')); 

     if ($posts) { 
      foreach($posts as $post) { 
       $exclude .= $post->ID . ','; 
      } 
     } 
     $exclude = substr($exclude,0, strlen($exclude)-1); 

     $where .= ' AND $wpdb->posts.ID NOT IN (' . $exclude . ')'; 
    } 
    return $where; 
} 
add_filter('posts_where', 'o99_my_rss_filter_by _field', 1, 4); 
Questions connexes