J'ai créé une fonction de filtrage personnalisée pour une recherche frontale, qui inclut également un groupe d'utilisateurs spécifique.
Pour ajouter la fonction à la recherche que j'ai utilisée
add_filter('pre_get_posts','my_filter_the_search',10,1);
function my_filter_the_search($query){
$post_type = filter_input(INPUT_GET, 'post_type', FILTER_SANITIZE_STRING);
if($post_type == 'document'):
add_filter( 'posts_search', '__search_by_title_only', 500, 2 );
//Get array of slugs of checked terms
$terms = (array) $_GET['post_type'];
//Tax_query array
$tax_query = array(array(
'taxonomy' => 'access',
'terms' => 'basic-user',
'field' => 'slug',
));
//Tell the query to filter by tax
$query->set('tax_query', $tax_query);
return $query;
endif;
}
Cela semble avoir pour effet de lister un type de publication personnalisé dans le backend.
Comment puis-je l'utiliser uniquement pour le début du site?
Ne connectez la fonction que si ce n'est pas le backend.
if( !is_admin() ){
add_filter('pre_get_posts','my_filter_the_search',10,1);
}
Il suffit de faire un var_dump( $query );
dans votre rappel pour voir les propriétés des objets. Une des propriétés que vous pouvez utiliser est is_admin
.
// functions.php
function my_search_filter($query) {
if ( $query->is_admin ) {
// do/set something on query
return $query;
}
return $query;
}
add_filter('pre_get_posts','my_search_filter');
L'utilisation de la fonction globale is_admin () convient également.