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?
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
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.
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 ;