شاید برای شما هم پیش آمده باشد که بخواهید بعضی صفحات یا هر محتوایی رو در جستجوی وردپرس نشان داده نشود، وردپرس به صورت پیشفرض تمامی نوشته ها و برگه ها را در نتایج جستجو نمایش میدهد. در این مقاله قصد دارم به شما آموزش بدم که چگونه برگه، نوشته، نویسنده، دسته بندی و یا هر محتوای دیگر را چگونه از نتایج جستجوی سایت ورپرسی حذف کنیم.
چرا باید بعضی از صفحات رو از نتایج جستجو حذف کنیم؟
همانطور که گفتم وردپرس در نمایش جستجو تمامی آیتم های موجود در سایت مثل برگه ها، دسته بندی ها، نوشته ها و… رو نمایش میدهد. خب این موضوع برای بعضی سایت ها قابل قبول هست، ولی گاهی ما برگه ای داریم که فعلا نمی خواهیم در دسترس عموم باشد یا سایت های فروشگاهی نباید در نتایج جستجو برگه های مثل حساب کاربری، تغییر رمز، برگه تشکر از خرید ویا… را نمایش دهند. یا حتی شاید ما نیاز داشته باشیم که یک دسته بندی خاص رو از نتایج جستجو حذف کنیم. بهینه سازی جستجوی وردپرس با حذف همین موارد اضافی و غیر ضروری انجام میشود که باعث ارائه تجربه کاربری بهتر برای کاربر و نتایج دقیق تر و تمیزتری می شود.
حذف نوشته ها یا برگه ها از نتایج جستجو در وردپرس
خب اگر ما فقط نیاز به حذف برگه ها و نوشته ها داشته باشیم بهتری است قبل از مراجعه به کد نویسی از افزونه ای استفاده کنیم که کار را برای ما راحت می کند. ما باید افزونه Search Exclude رو در قسمت افزونه ها اضافه و فعال کنیم (در بخش افزونه ها روی افزودن کلیک می کنید و در نوار جستجو Search Exclude را تایپ میکنیم، در نتایج نصب این افزونه را انجام میدهیم و بعد از نصب روی فعالسازی کلیک می کنیم.)
خب بعد از فعالسازی این افزونه برگه یا نوشته ای که میخواهیم در نمایش ها حذف شود را باز می کنیم در نوار ابزار سمت راست بخشی با عنوان Search Exclude اضافه شده است. مانند تصویر:
بسادگی با زدن تیک این قسمت میتوانید آن برگه یا نوشته را از نتایج حذف کنید. برای مشاهده برگه ها و نوشته های حذف شده هم از نوار سمت راست موس را روی تنظیمات میبریم و از منوی کشویی باز شده گزینه Search Exclude رو انتخاب میکنیم تا وارد صفحه این افزونه شویم، به محض ورود به این صفحه لیستی از صفحات و برگه هایی که ما این فیلتر را روی آنها اعمال کردیم را به ما نمایش میدهد، برای این که بخواهیم محدودیتی رو برداریم کافیست که تیک آبی رو از کنار عنوان صفحه برداریم و روی گزینه دخیره save کلیک کنیم.
حذف دستهبندی، تگ و یا طبقهبندی خاص از نتایج جستجو وردپرس به صورت دستی
روش دوم کمی کامل تر هست و ما فقط برای این فیلترها محدود به صفحات و برگه ها نیستم، یعنی امکان حذف نویسنده و دسته بندی ها و.. نیز وجود دارد که البته نیاز به کمی کدنویسی و اضافه کردن تکه کدی به function دارد. اگر محدودسازی شما فقط شامل برگه ها و نوشته نیست از روش دوم استفاده کنید در غیر این صورت روش اول خیلی راحت تر خواهد بود.
حذف یک دسته بندی از جستجوی وردپرس
ابتدا آیدی آن دسته بندی رو که قصد فیلتر داریم رو دربیاریم که برای راحتی میتوانید از آدرس url آن بعد از id= آیدی منحصر بفرد آن دسته بندی را مشاهده کنید، سپس باید تکه کد زیر را در functions.php اضافه کنیم:
function wpb_search_filter( $query ) { if ( $query->is_search && !is_admin() ) $query->set( 'cat','-7' ); return $query; } add_filter( 'pre_get_posts', 'wpb_search_filter' );
فراموش نکنید که به جای عدد 7 باید آیدی دسته بندی مورد نظرتان را قرار دهید.
حال اگر بخواهیم چند دسته بندی را حذف کنیم مجدد نباید همین کد رو زیرش دوباره اضافه کنیم و به شکل زیر عمل میکنیم:
function wpb_search_filter( $query ) { if ( $query->is_search && !is_admin() ) $query->set( 'cat','-7, -10, -21' ); return $query; } add_filter( 'pre_get_posts', 'wpb_search_filter' );
حذف یک تگ یا چند تگ از نتایج جستجوی وردپرس
اگر قصد دارید تا پستهایی که حاوی یک تگ خاص هستند را از نتایج جستجو حذف کنید، کافیست که از کد زیر استفاده کنید.
if ( $query->is_search && !is_admin() ) $query->set( 'tag','-19' ); return $query; } add_filter( 'pre_get_posts', 'wpb_search_filter' );
و باز هم فراموش نکنید که آیدی تگ مورد نظر رو به جای عدد 19 قرار دهید.
برای اعمال فیلتر روی چند تگ هم باز به روش قبلی عمل می کنیم که میشود این:
if ( $query->is_search && !is_admin() ) $query->set( 'tag','-19, -27, -56' ); return $query; } add_filter( 'pre_get_posts', 'wpb_search_filter' );
حذف کردن یک نویسنده از لیست نتایج جستجوی وردپرس
اگر بخواهیم نویسنده ای که دیگر فعالیت در سایت ندارد رو حذف کنیم که تعداد کمی پست و مطلب دارد از روش های بالا هم برای نمایش ندادن پست ها می توانیم استفاده کنیم ولی اگر به هر دلیل بخواهیم اون نویسنده رو فیلتر کنیم که مطالب منتشر شده توسط آن نمایش داده نشود باید از این کد استفاده کنیم.
function wpb_search_filter( $query ) { if ( $query->is_search && !is_admin() ) $query->set( 'author','-24' ); return $query; } add_filter( 'pre_get_posts', 'wpb_search_filter' );
اینجا هم باید به جای عدد 24 آیدی نویسنده را وارد کنیم.
همچنین برای قرار دادن چند نویسنده در این فیلتر هم از روش زیر استفاده می کنیم:
function wpb_search_filter( $query ) { if ( $query->is_search && !is_admin() ) $query->set( 'author','-24, -12, -19' ); return $query; } add_filter( 'pre_get_posts', 'wpb_search_filter' );
امیدوارم با این مقاله و آموزش توانسته باشم بهتون کمکی کرده باشم، هرگونه مشکل یا پیشنهاد و انتقادی رو خوشحال میشم از بخش نظرات به ما برسانید.