wordpress

كيفية تحديد نتائج البحث في WordPress

تحديد نتائج بحث WordPress حسب الفئة

فيما يلي بعض الطرق التي يمكنك استخدامها للحد من نتائج البحث حسب الفئة والتي يمكن أن تكون مفيدة جدًا لمواقع مثل WPExplorer.com الذي يحتوي على أقسام مثل السمات والمكونات الإضافية والمدونة.

1. استخدام حقل إدخال مخفي في ملف Searchform.php الخاص بك

هذه هي الطريقة التي أستخدمها حاليًا على WPExplorer.com ، لذلك عندما يبحث الأشخاص في الموقع الرئيسي ، سيحصلون فقط على نتائج البحث من فئة “سمات WordPress”. كل ما عليك فعله هو إضافة إدخال مخفي إلى searchform.php مع معرف “cat” ومعرف الفئة للقيمة.

بحث أساسي. php

<form method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <input type="text" size="16" name="s" value="Search"  />
    <input type="submit" value="Go" />
</form>

أضف ما يلي للحد من الفئة بمعرف 5

<input type="hidden" name="cat" id="cat" value="5" />

كود كامل

<form method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <input type="hidden" name="cat" id="cat" value="5" />
    <input type="text" size="16" name="s" value="Search"  />
    <input type="submit" value="Go" />
</form>

2. إضافة بيان استعلام إلى ملف Search.php الخاص بك

هناك طريقة أخرى مفيدة لقصر نتائج البحث على فئات محددة وهي إضافة استعلام إلى ملف search.php الخاص بك قبل عبارة if مباشرة.

بما في ذلك الفئات للبحث

باستخدام معرفات موجبة في الاستعلام ، يمكنك تحديد الفئات التي تريد إظهارها في نتائج البحث (إظهار الفئات بمعرف 1،2 و 3).

<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
query_posts( "s=$s&paged=$paged&cat=1,2,3" );
?>

استبعاد الفئات من البحث

بدلاً من ذلك ، يمكنك استخدام المعرفات السلبية لاستبعاد فئات معينة من صفحة البحث الخاصة بك (استبعاد الفئة بمعرف 7)

<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
query_posts( "s=$s&paged=$paged&cat=-7" );
?>

استبعاد صفحات من صفحة البحث الخاصة بك

فيما يلي طريقتان يمكنك من خلالهما تقييد نتائج البحث لاستبعاد الصفحات من النتائج وإظهار المشاركات فقط.

باستخدام وظيفة

ما عليك سوى إدخال الوظيفة التالية في ملف jobs.php الخاص بك

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

استخدام الشرطي في ملف Search.php الخاص بك

هناك طريقة أخرى لإزالة الصفحات من ملف search.php وهي إدراج شرط شرطي في ملف search.php الخاص بك مباشرةً بعد “while (have_posts ())”. لا يوصى بذلك إذا كنت تستخدم مظهرًا تابعًا لجهة خارجية لأنك إذا قمت بتحديث السمة في المستقبل ، فستفقد تعديلاتك ، إذا كان هذا هو المظهر المخصص الخاص بك ، فلا بأس بذلك.

<?php
if ( have_posts() ) : while ( have_posts() ) : the_post();
   // Exclude pages from the loop
   if ( is_search() && ( $post->post_type=='page' ) ) {
       continue;
   } ?>

استبعاد صفحة أو صفحات معينة

يمكنك أيضًا استبعاد منشورات / صفحات معينة من صفحات نتائج البحث على معرّفاتهم باستخدام الكود التالي الذي تمت إضافته في ملف function.php. ما عليك سوى تغيير مجموعة المعرفات لتضمين معرفات الصفحات أو المنشورات التي ترغب في استبعادها.

// Exclude specific posts/pages from search
function exclude_pages_from_search($query) {
	if ( $query->is_main_query() && is_search() ) {
		$exclude_ids = array( 7, 19 , 21 ); // Array of the ID's to exclude
		$query->set( 'post__not_in', $exclude_ids );
	}
	return $query;
}
add_filter( 'pre_get_posts','exclude_pages_from_search' );

قصر البحث على نوع النشر

أحد أسباب استخدام أنواع المنافذ في WordPress هو أنك لا تريدها في خلاصتك أو حلقة wp الرئيسية ، وهذا هو السبب في أنها مثالية لأشياء مثل أشرطة التمرير والشهادات والخدمات … إلخ. ومع ذلك ، قد يستمر ظهور مشاركاتك المخصصة في صفحة نتائج البحث.

1. استبعاد نوع منشور مخصص من نتائج البحث

كل ما عليك فعله لاستبعاد المنشورات المخصصة من نتائج البحث هو تعيين الوسيطة التالية عند تحديد منشورك المخصص ( مزيد من المعلومات ):

'exclude_from_search' => true

2. استخدام حقل مخفي في نموذج البحث لعرض المشاركات فقط من نوع منشور مخصص معين

بدلاً من ذلك ، يمكنك استخدام حقل مخفي في نموذج البحث بنفس الطريقة التي استخدمتها لتحديد الفئات إذا كنت تريد إعداد نموذج بحث متقدم يبحث فقط من خلال نوع المنشور المخصص المحدد.

<input type = "hidden" name = "post_type" value = "Wallet" />

سيظهر هذا الحقل الإضافي داخل نموذج البحث الخاص بك ويمكنك ببساطة استبدال المكان الذي يقول فيه “المحفظة” باسم نوع المنشور المخصص الخاص بك. هذه الطريقة رائعة إذا كان لديك قسم معين على موقعك يستخدم أنواع منشورات مخصصة وتريد أن يتمكن المستخدمون من البحث في تلك المنشورات المحددة فقط.

تغيير عدد النتائج لكل صفحة

بشكل افتراضي ، يستخدم WordPress الرقم المحدد ضمن الإعدادات> القراءة (تظهر صفحات المدونة على الأكثر …) لتحديد عدد النتائج التي تظهر في صفحة نتائج البحث. إذا كنت ترغب في عرض نتائج أكثر أو أقل أو لانهائية على صفحة البحث الخاصة بك ، فيمكنك القيام بذلك باستخدام الكود التالي:

// Alter search posts per page
function myprefix_search_posts_per_page($query) {
    if ( $query->is_search ) {
        $query->set( 'posts_per_page', '10' );
    }
    return $query;
}
add_filter( 'pre_get_posts','myprefix_search_posts_per_page' );

سيظهر هذا الرمز في ملف jobs.php الخاص بك. ويفضل أن يكون ذلك في قالب طفلك إذا كنت تعمل مع سمة من مطور آخر. سيقوم الرمز بتعيين نتائج البحث الخاصة بك على “10” لكل صفحة. يمكنك تغيير الرقم إلى ما تريد. لجعل نتائج البحث غير محدودة استخدم -1. أو استخدم مكونًا إضافيًا مثل Toolset Search لإضافة ترقيم الصفحات إلى نتائجك.

بحث متقدم / أفضل

يقوم WordPress بعمليات البحث الافتراضية بناءً على أي محتوى داخل منشوراتك وصفحاتك. قد يكون من الممكن تغيير طريقة عمل البحث عبر الوظائف ، لكنها معقدة إلى حد ما ، لذا إذا كنت ترغب في تغيير الطريقة التي يعمل بها البحث بالفعل (ما الذي يبحث عنه) ، فيمكنك بدلاً من ذلك استخدام مكون إضافي مثل ملحق WP Extended Search  . انقر فوق الشعار أدناه للتحقق منه أو البحث عنه في لوحة معلومات WordPress الخاصة بك ضمن المكونات الإضافية> إضافة جديد .

سيسمح لك هذا البرنامج المساعد بالتحكم بشكل أفضل في البحث الافتراضي إذا كنت تريد البحث عن طريق التعريف ، والفئات ، والعلامات ، والمصطلحات ، والعنوان … إلخ. يمكنك تضمين أو استبعاد أنواع منشورات معينة من البحث ، واستبعاد المنشورات الأقدم ثم ذات التاريخ المحدد ، وتغيير عدد العناصر المعروضة في نتائج البحث والمزيد!

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى
error: عفوا محتوي هذا الموقع محمي بموجب قانون الألفية للملكية الرقمية !!