web-dev-qa-db-fra.com

Requête de recherche -> Afficher toutes les pages sauf certains modèles

Voici mes arguments pour la requête de recherche:

$args = array(
 's' =>$s,
 'post_type' => array( 'post', 'p24_cases', 'page')
);

En utilisant ces arguments, les résultats de la recherche montreront toutes les pages contenant le mot de recherche. Je souhaite afficher toutes les pages, à l'exception du modèle de page appelé 'bedankt' (merci en néerlandais).

1
Maarten Wolfsen

RÉPONSE À UNE RÉPONSE À RÉPONDRE À LA QUESTION

Pour exclure toutes les pages avec un certain modèle, il vous suffit d'exécuter un meta_query pour exclure toutes les pages avec le champ personnalisé _wp_page_template défini sur bedankt. N'oubliez pas que WordPress enregistre le modèle attribué à une page sous forme de champ personnalisé masqué appelé _wp_page_template

Dans cet esprit, nous pouvons faire ce qui suit

$args = [
    's'         => $s,
    'post_type' => ['post', 'page', 'p24_cases'],
    'meta_key'  => [
        [
            'key'     => '_wp_page_template',
            'value'   => 'bedankt.php',
            'compare' => 'NOT IN'
        ]
    ]
];

RÉPONSE ORIGINALE - question mal interprétée

Vous devez simplement obtenir l'ID de publication de cette page, puis le transmettre sous forme de tableau à post__not_in

'post__not_in' => [1], // Replace 1 with actual page ID

Ou pré PHP 5.4

'post__not_in' => array( 1 ), // Replace 1 with actual page ID
1
Pieter Goosen