جستجو بر اساس برچسب در وردپرس

جستجو بر اساس برچسب در وردپرس

جستجو بر اساس برچسب در وردپرس – در این آموزش با استفاده از کلاس WP_Query می توانیم جستجو را بر اساس برچسب نمایش دهیم وردپرس به طور پیشفرض کلمه جستجو شده را در عنوان و محتوا جستجو می کند .
به طور کلی در taxonomy ها نمی گردد .

بنابراین کلمه را در 2 ، taxonomy پیشفرض یعنی tag و category جستجو نمی کند .

کار با کلاس WP_Query برای جستجو بر اساس برچسب

ابتدا باید با استفاده از تابع get_search_query کلمه جستجو شده را پیدا کنیم .

$search_query_var = get_search_query();


حال باید آرگومان ها را برای کلاس WP_Query در یک آرایه ذخیره کرده و وارد کنیم .

$tag_query_args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'post_tag',
            'field' => 'name',
            'terms' => $search_query_var,

        ),
    ),
);


از WP_Query یک آبجکت می سازیم و آرگومان را می دهیم .

$search_query = new WP_Query($tag_query_args);


اما مشکلی که وجود دارد فقط کلمه را در برچسب مطالب جستجو می کند و دیگر در عنوان و بدنه مطلب جستجو نمی کند .

برای حل این مشکل کافی است که این کد را هم بعد از search_query$ اضافه کنید .

if (!$search_query->have_posts())
    $search_query = new WP_Query(array('post_type' => 'post', 's' => $search_query_var));


در پایان هم حلقه while برای لیست کردن مطالب پیدا شده :

<?php if ($search_query->have_posts()) : ?>

    <?php while ($search_query->have_posts()) : $search_query->the_post() ?>

    <h2><?php the_title() ?></h2>


    <?php endwhile; ?>


<?php else : echo 'مطلبی یافت نشد ):';?>

<?php endif; ?>


دانلود پروژه جستجو بر اساس برچسب

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

لیست نظرات

  1. نگین
    نگین

    سلام من میخواستم با توجه به قالب حال حاظر وقتی در قسمت جستجوی سایت سرچ میکنیم تگ های مربوطه رو هم کنار پست ها بیاره این کدهایی که بالا نوشتید رو کجای قالب باید قرار بدیم ؟ من اصلا برنامه نویسی بلد نیستم لطفا ساده بگید که چه کنم؟

    14 شهریور 1402 | 11:50:08
  • حسین باقری
    حسین باقری

    سلام ، اگر برنامه نویسی بلد نیستید امکان پذیر نیست .

    14 شهریور 1402 | 12:21:48
contact us