ฉันจะลบหน้าออกจากการค้นหาได้อย่างไร


13

ฉันไม่จำเป็นต้องค้นหาหน้าเว็บในเว็บไซต์ของฉันและต้องการค้นหาเฉพาะโพสต์มีวิธีการหรือไม่ ขอบคุณ

search 

คำตอบ:


28

ด้านล่างควรทำให้ประเภทโพสต์ของหน้าไม่สามารถค้นหาได้อีก

function remove_pages_from_search() {
    global $wp_post_types;
    $wp_post_types['page']->exclude_from_search = true;
}
add_action('init', 'remove_pages_from_search');

ฉันจะวางรหัสนั้นได้ที่ไหน ขอบคุณ

คุณสามารถวางไว้ใน function.php ของชุดรูปแบบของคุณ
prettyboymp

ขอบคุณมาก ๆ ฉันเพิ่งคัดลอกวางและใช้งานได้อย่างสมบูรณ์

13

ในฟังก์ชั่นต่อไปนี้ยังทำงานได้ดี:

//Remove pages from search results
function mySearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','mySearchFilter');

shuold เป็นทางออก สง่างามมากขึ้นบำรุงรักษาได้มากขึ้น hte ด้านบนเป็นเพียงการแก้ไขพารามิเตอร์โพสต์ประเภทนี้เป็นคำค้นหาตัวเอง +1
ไกเซอร์

การแก้ไขออบเจกต์ประเภทโพสต์สำหรับ 'โพสต์' ประเภทการโพสต์เป็นทางออกที่ดีกว่า วิธีการแก้ปัญหานี้บังคับให้โพสต์ประเภทนั้นยากที่จะตั้งเป็น 'โพสต์' สำหรับการค้นหาทั้งหมดซึ่งจะทำให้ประเภทโพสต์ที่กำหนดเองใด ๆ จากการแสดงในการค้นหาหากเว็บไซต์มีใด ๆ การตั้งค่าคุณสมบัติ excluse_from_search ทั่วโลกของวัตถุประเภทโพสต์ 'หน้า' หมายความว่ารหัสใด ๆ ที่ขึ้นอยู่กับการตรวจสอบคุณสมบัตินี้จะมีข้อมูลที่ถูกต้อง
prettyboymp

ลิงค์ที่เกี่ยวข้องค่อนข้างมีข้อมูลเพิ่มเติมน้อย: codex.wordpress.org/...
its_me

ใช้งานได้ดี แต่ไม่ shoing หัวข้อใน bbpress ดังนั้นจึงไม่ดี ใช้ "$ wp_post_types ['หน้า'] -> แยกออกจากการค้นหา = true;" เป็นตัวเลือกที่ดีดูเหมือนว่า
Kishore Sahoo

0

ใส่สิ่งนี้ลงใน search.php ของคุณ

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

ด้านล่างรหัสนี้ -> <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

คุณสามารถหาข้อมูลเพิ่มเติมได้ที่นี่http://wordpress.org/support/topic/possible-search-only-posts-exclude-pages


ฉันไม่มี search.php หากฉันเรียกคืนจากธีมอื่นมันจะใช้งานได้หรือไม่ ขอบคุณ

ใช่. ก่อนอื่นให้สร้าง search.php ที่ว่างเปล่าจากนั้นคัดลอกและวางรหัสจาก index.php จากนั้นทำสิ่งที่ฉันบอกคุณข้างต้น
andrewk

1
จริงๆแล้วคุณควรใช้รหัสของ @ prettyboymp มันง่ายกว่าและทำในสิ่งที่คุณถาม ฉันทดสอบมัน ถ้าคุณต้องการ ..
andrewk

0

นี่คือรหัสที่ตรวจสอบว่าการค้นหามาจากผู้ดูแลระบบหรือไม่จากนั้นตั้งค่าประเภทโพสต์เป็นค้นหา:

if (!is_admin()) {
function wpb_search_filter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','wpb_search_filter');
}

จาก: http://www.wpbeginner.com/wp-tutorials/how-to-exclude-pages-from-wordpress-search-results/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.