در وردپرس بطور پیش فرض در نتایج جستجو تمامی مطالب و برگه ها با کلمه کلیدی وارد شده برای فرم جستجو لحاظ می شوند، مگر اینکه قالب شما کدی داشته باشد که برخی از مطالب یا برگه ها را از نتایج جستجوی داخلی سایتتان مخفی کند. در این تاپیک از بی تاک قصد داریم انواع و حالت های مختلف مخفی کردن مطالب و برگه های دلخواه از نتایج جستجو داخلی سایت را با هم بررسی کنیم.

استثناء کردن چند مطلب یا برگه خاص
گاهی اوقات ممکن است قصد داشته باشید تنها یک یا چند عدد از برگه ها یا مطالب مشخص را از نتایج مخفی کنید. در این شرایط کد زیر را در فایل functions.php
قالبتان اضافه کنید:
function betalk__search_filter($query) {
if ( !$query->is_admin && $query->is_search) {
$query->set('post__not_in', array(40, 9) ); // شناسه برگه یا مطلب
}
return $query;
}
add_filter( 'pre_get_posts', 'betalk__search_filter' );
سپس در قسمت مشخص شده، آی دی برگه یا مطلب موردنظرتان را وارد کنید. درحال حاضر آی دی 40 و 9 وارد شده که شما می توانید هر چند آی دی که می خواهید وارد کنید و با ویرگول انگلیسی از هم جدا کنید. برای مثال: 50, 60, 61, 62, 63, 90
استثناء کردن یک یا چند دسته بندی خاص
اگر قصد دارید مطالب موجود در یک یا چند دسته بندی خاص از نتایج جستجو مخفی شوند این کد را در فایل functions.php
قالبتان اضافه کنید:
function betalk__exclude_category_search( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_search ) {
$query->set( 'cat', '-22, -21' ); // آی دی ها را اینجا وارد کنید
}
}
add_action( 'pre_get_posts', 'betalk__exclude_category_search', 1 );
شما باید آی دی دسته بندی های مورد نظرتان را به صورت یک عدد منفی و جدا شده با کاما انگلیسی از هم جدا کنید. در کد بالا خط وارد کردن آی دی ها مشخص شده و آی دی های 21 و 22 بطور پیش فرض داخل کد بالا وارد شده است.
استثناء کردن پست تایپ دلخواه
اگر در قالبتان پست تایپ سفارشی اضافه شده، مانند پست تایپ فیلم یا لینک و … و قصد دارید مطالبی که در آن پست تایپ هستند را از نتایج جستجو مخفی کنید، این کد را در فایل functions.php
قالب اضافه کنید.
add_action( 'init', 'betalk_exclude_cposttype', 99 );
function betalk_exclude_cposttype() {
global $wp_post_types;
if ( post_type_exists( 'movie' ) ) {
$wp_post_types['movie']->exclude_from_search = true;
}
}
در خط 5 و 6 کد بالا نام پست تایپی که باید از نتایج مخفی شود وارد شده است. پست تایپ داخل کد بالا movie
است که نام پست تایپ موردنظرتان را باید بجای این دو کلمه جایگزین کنید.