J'essaie d'écrire une fonction pour mon fichier functions.php. Je dois faire ce qui suit;
J'ai trouvé du code sur le forum Wordpress Codex, j'en ai ajouté un peu moi-même mais je ne sais malheureusement pas ce que je fais ...
function filter_where($where = '') {
global $wpdb; // do I need this?
if ( is_search() ) {
if(is_page_template('landing.php')) { echo 'yes!'; } // ids collected here
$exclude = array(286);
for($x=0;$x<count($exclude);$x++){
$where .= " AND ID != ".$exclude[$x];
}
}
return $where;
}
add_filter('posts_where', 'filter_where');
Le filtre que vous utilisez posts_where
affecte la création de la requête SQL. Par conséquent, il est par définition exécuté avant que la requête ne soit exécutée et vous obtenez des résultats de recherche.
Par conséquent, vous ne pouvez pas parcourir les résultats à ce stade. Vous pouvez simplement extraire la liste des éléments non souhaités d’autres endroits ou la coder en dur et les utiliser pour modifier la requête.
Mettre à jour
Ok, c'est plus rapide à coder que d'essayer de résoudre avec des commentaires. Ce n'est probablement pas parfait mais devrait être un bon point de départ pour ce que vous voulez:
add_action('pre_get_posts','exclude_pages');
function exclude_pages( $query ) {
if( !empty( $query->query_vars['s'] ) ) {
$pages = get_posts(array(
'post_type' => 'page',
'meta_query' => array( array(
'key' => '_wp_page_template',
'value' => 'landing.php',
)),
));
$exclude = array();
foreach( $pages as $page )
$exclude[] = $page->ID;
$query->set('post__not_in', $exclude);
}
}
Si vous devez supprimer des pages ou des publications spécifiques de vos résultats de recherche, vous pouvez facilement le faire en utilisant le plug-in " WP Hide Post ".
Selon sa description: "Vous permet de contrôler la visibilité des éléments de votre blog en créant des messages/pages cachés sur certaines parties de votre blog, tout en restant visibles dans d'autres."
En particulier, ce plugin vous permet de contrôler la visibilité d’un post dans différentes vues:
Les messages disparaîtront des endroits où vous les avez choisis. Partout ailleurs, ils apparaîtront comme des postes réguliers. En particulier, les liens permanents des articles fonctionnent toujours, et si vous générez un plan du site, avec quelque chose comme le sitemap de Google XML, l'article sera également présent. Cela signifie que le contenu de votre message sera indexé et consultable par les moteurs de recherche.
Pour une page WordPress , ce plugin vous permet également de contrôler la visibilité avec deux options: