Cum elimin Paginile din căutare?

16 dec. 2010, 03:01:47
Vizualizări: 21.8K
Voturi: 18

Nu am nevoie să caut pagini pe site-ul meu și vreau să caut doar articole, există o modalitate de a face acest lucru? Mulțumesc

0
Toate răspunsurile la întrebare 5
5
37

Codul de mai jos va face ca tipul de postare "pagina" să nu mai fie căutabil în rezultatele căutării.

function remove_pages_from_search() {
    global $wp_post_types;
    $wp_post_types['page']->exclude_from_search = true;
}
add_action('init', 'remove_pages_from_search');
16 dec. 2010 04:23:36
Comentarii

Unde pun acel cod? Mulțumesc

User User
16 dec. 2010 05:09:22

Îl poți plasa în functions.php al temei tale.

prettyboymp prettyboymp
16 dec. 2010 05:18:38

Mulțumesc enorm. Tocmai l-am copiat și lipit și funcționează perfect

User User
18 dec. 2010 22:14:25

Există vreo modalitate de a ascunde anumite pagini în loc să le ascundem pe toate?

user9437856 user9437856
18 oct. 2021 14:19:39

Această idee nu respectă API-ul WP și, ca orice modificare directă a variabilelor, ar trebui considerată mai degrabă un hack decât o soluție.

Krzysztof Przygoda Krzysztof Przygoda
21 oct. 2021 00:26:59
4
14

Următorul cod în functions.php funcționează de asemenea bine:

//Elimină paginile din rezultatele căutării
function mySearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','mySearchFilter');
16 dec. 2010 07:18:41
Comentarii

ar trebui să fie soluția. mai elegant, mai ușor de întreținut. varianta de mai sus modifică doar parametrii tipului de postare, în timp ce aceasta modifică interogarea de căutare în sine. +1

kaiser kaiser
4 feb. 2011 11:37:05

Modificarea obiectului tipului de postare pentru tipul 'page' este o soluție mai bună. Această soluție forțează tipul de postare să fie hardcodat ca 'post' pentru toate interogările de căutare, ceea ce ar împiedica afișarea oricăror tipuri personalizate de postări în rezultatele căutării dacă un site le-ar avea. Setarea globală a proprietății exclude_from_search pentru obiectul tipului de postare 'page' înseamnă că orice cod care depinde de verificarea acestei proprietăți va avea informația corectă.

prettyboymp prettyboymp
23 ian. 2012 20:44:37

Un link oarecum relevant cu puțină informație suplimentară: http://codex.wordpress.org/Post_Types#Custom_Post_Types_in_the_main_Query

its_me its_me
27 feb. 2013 07:57:19

Funcționează bine, dar nu afișează subiectul în bbPress, deci nu este ok. Folosirea "$wp_post_types['page']->exclude_from_search = true;" pare a fi o opțiune bună

Kishore Sahoo Kishore Sahoo
24 iul. 2015 16:27:12
1

Iată codul pentru eliminarea anumitor pagini din căutarea în WordPress, adăugați următorul cod în fișierul functions.php Doar înlocuiți array-ul cu ID-urile paginilor dumneavoastră

function remove_pages_from_search($query) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ($query->is_search) {
      $query->set('post__not_in', array(3031,2958,2926));
    }
  }
}

add_action('pre_get_posts','remove_pages_from_search');
7 iul. 2021 18:01:04
Comentarii

Funcționează pentru mine. Mulțumesc și un vot pozitiv din partea mea

user9437856 user9437856
18 oct. 2021 14:35:35
3

pune asta în search.php

<?php if (is_search() && ($post->post_type=='page')) continue; ?>

chiar sub acest cod -> <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

poți afla mai multe aici http://wordpress.org/support/topic/possible-search-only-posts-exclude-pages

16 dec. 2010 04:00:37
Comentarii

Nu am un fișier search.php, dacă îl iau de la o altă temă, va funcționa? Mulțumesc

User User
16 dec. 2010 05:10:31

da. mai întâi creează un fișier search.php gol, apoi copiază și lipește codul din index.php. apoi fă cum ți-am spus mai sus.

andrewk andrewk
16 dec. 2010 07:33:38

de fapt ar trebui să folosești codul lui @prettyboymp. e mai ușor și face exact ce ai cerut. l-am testat. dacă vrei..

andrewk andrewk
16 dec. 2010 07:38:31
3

Această soluție respectă API-ul WordPress în loc să modifice direct variabilele interne.

Observați că în acest fel puteți de asemenea include (suprascrie înregistrarea) tipuri sau să modificați argumentele de înregistrare furnizate în register_post_type(). Consultați descrierea 'exclude_from_search' în documentație.

/**
 * Filtrează tipurile de obiecte în rezultatele căutării.
 * 
 * @param array $args  Matrice de argumente pentru înregistrarea unui tip de post.
 *                     Vezi funcția register_post_type() pentru argumentele acceptate.
 * @param string $type Cheia tipului de post (obiect) (ex. 'post', 'page', 'attachment'...,
 *                     sau orice tip de post personalizat înregistrat).
 * @return array Atributele filtrate ale tipului.
 */
function _filter_search_types( $args, $type ) {
    $exclude_types = array( 'page' );

    if ( in_array( $type, $exclude_types, true ) ) {
        $args['exclude_from_search'] = true;
    }

    return $args;
}
if ( ! is_admin() ) {
    add_filter( 'register_post_type_args', __NAMESPACE__ . '\_filter_search_types', 10, 2 );
}
21 oct. 2021 00:15:49
Comentarii

@Rup - Am vorbit despre WP API, nu WP REST API (care este irelevant aici). Și aceasta nu este o "alternativă" la răspunsul acceptat, ci "metoda corectă", deoarece "răspunsul acceptat" nu urmează WP API și, ca orice modificare directă a variabilelor, ar trebui considerat un hack mai degrabă decât o soluție.

Krzysztof Przygoda Krzysztof Przygoda
21 oct. 2021 01:51:51

@Rup - Și ai dreptate - comment nu este un tip de post (corectat).

Krzysztof Przygoda Krzysztof Przygoda
21 oct. 2021 01:59:54

Da, am înțeles greșit, îmi pare rău

Rup Rup
21 oct. 2021 12:36:48