web-dev-qa-db-fra.com

Puis-je masquer un article spécifique de la page des derniers articles?

Disons que j'ai un message que je souhaite uniquement afficher dans la page de la catégorie à laquelle il appartient. Le problème est que ce message est également visible dans la page des derniers messages.

Est-il possible de cacher ce message de la dernière page de messages et de l'afficher uniquement dans la page de la catégorie du message?

2
Renato Lochetti
function exclude_single_posts_home($query) {
  if ($query->is_home() && $query->is_main_query() && !is_admin()) {
    $query->set('post__not_in', array(post-id));
  }
}

add_action('pre_get_posts', 'exclude_single_posts_home');

Source: pre_get_posts

2
Brad Dalton

Puisque vous utilisez les paramètres de base "Page pour les publications", vous devriez pouvoir utiliser l'action awesome pre_get_posts pour supprimer l'ID spécifique que vous souhaitez exclure.

Cela devrait fonctionner dans votre fichier functions.php ou votre plugin /mu-plugins/:

wpse94273_hide_post( $query ) {
    // only remove post ID from page_for_posts and in the main query
    if( $query->is_home() && $query->is_main_query() ) {
        // remove specific page ID from query
        query->set( 'post__not_in', array( {your post id} ) );
    }
}
add_action( 'pre_get_posts', 'wpse_94273_hide_post' );

Remplacez "{votre identifiant de publication}" par l'ID de la publication que vous souhaitez exclure. C'est une array, vous pouvez donc entrer plusieurs ID séparés par des virgules si vous le souhaitez.

Si l'ID de publication change, vous devez configurer une sorte d'option à l'aide de l'API de configuration pour stocker l'ID à exclure.

1
mrwweb

Votre question est difficile à comprendre. Voulez-vous dire un message spécifique ou quelque chose de automatique? si vous voulez parler d’un message spécifique et si vous utilisez wp_query/query posts pour boucler les derniers posts, vous pouvez ajouter ce paramètre.

'post__not_in' => array($postId)

Exemple de requête:

$relatedargs = array(
    'post__not_in'      => array($postId) // THIS IS THE LINE
);
$the_query = new WP_Query( $relatedargs );

// The Loop
if( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) : $the_query->the_post();

// YOUR LOOP HERE

endwhile; 
}

J'espère que cela t'aides ;

0
Sagive SEO