DariushGreat

جستجوی شرطی پست تایپ

7 پست در این موضوع قرار دارد

سلام

من با کد زیر یک فرم جستجو درست کردم:


<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/') ); ?>">
<ul>
<li>
<input type="text" class="search-input" name="s" placeholder="کلمه مورد نظر خود را وارد كنيد" />
<input type="hidden" value="" name="cat"/>
<input type="hidden" value="" name="post_type" value="<?php $discoPeople ?>"/>
</li>
<li>
<?php wp_dropdown_categories( $args ); ?>
</li>
<li>
<input type="submit" name="submit" class="search-botton" value="" />
</li>
</form>[/size]
[size=5]

و آرگومان های فهرست پایین افتادنی:


$args = array(
'show_option_all' => 'All Catagories',
'show_option_none' => '',
'orderby' => 'ID',
'order' => 'ASC',
'show_count' => 1,
'hide_empty' => 0,
'child_of' => 0,
'exclude' => '1,5',
'echo' => 1,
'selected' => 0,
'hierarchical' => 0,
'name' => 'cat',
'id' => '',
'class' => 'postform',
'depth' => 1,
'tab_index' => 0,
'taxonomy' => 'download_category',
'hide_if_empty' => false,
);

خب حالا من اگر بخوام بهش بفهمونم اگر دسته ای انتخاب شد جستجو رو از پست تایپ download انجام بده، از چه دستور شرطی ای باید استفاده کنم؟

ممنون از راهنمایی

0

به اشتراک گذاری این پست


لینک به پست

سلام ، ابتدا میخوام که لطفاً به فونت نوشته دست نزنید چون باعث خسته شدن چشم میشه (جزو قوانینم هست)

queried object دسته بندی رو بگیرید و به وسیله یک شرط مشخص کنید که:

if( $queried_cat == 'فلان-دسته-بندی' ) {
$post_type = 'custom-post-type' }

و حالا به $args اضافه کنید:

    'post_type' => $post_type,

اینجوری اگر دسته بندی انتخاب شده فلان دسته بندی باشه ، مقدار $post_type تبدیل میشه به custom-post-type و خودتون میتونین else رو انتخاب کنید که در غیر اینصورت چی نمایش داده بشه.

موفّق باشید.

2

به اشتراک گذاری این پست


لینک به پست

در وهله اول پوزش میخوام برای این که فونت رو بزرگ کردم.

جناب کد اصلا جواب نمیده. بازم Not found میده. پایان نشانی به همین شکل در میاد:


?s=&cat=&cat=3&submit=

0

به اشتراک گذاری این پست


لینک به پست
در وهله اول پوزش میخوام برای این که فونت رو بزرگ کردم. جناب کد اصلا جواب نمیده. بازم Not found میده. پایان نشانی به همین شکل در میاد:
 ?s=&cat=&cat=3&submit= 

خب شما نگفته بودید که فرم خرابه ، گفته بودید شرط رو چجوری قرار بدم که من اونجوری گفتم براتون.

?s=&cat=&cat=3&submit=

1: توی این آدرس از 2 تا cat نامبرده شده که باید یکی میبود

2: چیزی سرچ نشده که

3: مقدار submit هم خالیه... البتّه 2 مورد بالا مهم هستن

_

cat خالیه اوّل به این دلیل هست فکر کنم که یه اینپوت hidden دارین با نام cat

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

فرم زیر رو یه تست بکنید (اگر نشد آدرس آنلاین قرار بدید تا رفعش کنیم):

‌<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/') ); ?>">
<ul>
<li>
<input type="text" class="search-input" name="s" placeholder="کلمه مورد نظر خود را وارد كنيد" />
<input type="hidden" value="" name="post_type" value="<?php $discoPeople ?>"/>
</li>
<li>
<?php wp_dropdown_categories( $args ); ?>
</li>
<li>
<input type="submit" name="submit" class="search-botton" value="جستجو" />
</li>
</form>

1

به اشتراک گذاری این پست


لینک به پست

سپاس از شما

بله مشکل دسته بندی دوم دقیقا از همون ورودی پنهان دوم بود که برداشتمش و به جای cat در ورودی پنهان اصلی همون post_type شما رو نوشتم.

با مطالعه چند نوشته پیرامون همین موضوع کدهای رو به شکل زیر دگرگون کردم:


<?php
$args = array(
'show_option_all' => 'All Catagories',
'show_option_none' => '',
'orderby' => 'ID',
'order' => 'ASC',
'show_count' => 1,
'hide_empty' => 0,
'child_of' => 0,
'exclude' => '',
'echo' => 1,
'selected' => 0,
'hierarchical' => 0,
'name' => 'cat',
'id' => '',
'class' => 'postform',
'depth' => 1,
'tab_index' => 0,
'taxonomy' => 'download_category',
'hide_if_empty' => false,
'value_field' => 'slug',
);
?>
<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/') ); ?>">
<input type="text" class="search-input" name="s" placeholder="<?php echo _('looking for something?','amirLiberary'); ?>" />
<input type="hidden" value="" name="post_type"/>
<span> دسته بندی: <?php wp_dropdown_categories( $args ); ?></span>
<input type="submit" name="submit" class="search-botton" value="" />
</form>

نشانی ای که فرم به شکل خام (بدون پر کردن) با گزینش دسته بندی Books برمیگردونه اینه:


?s=&post_type=&submit=&cat=books

این نشونه خوبیه! یعنی تونستم کاری کنم که در کنار پست تایپ مثل آدم اسلاگ دسته بندی رو هم بیاره توی نشانی. الان فقط به یه ساختار شرطی نیاز دارم که بهش بفهمونم اگر دسته بندی ای غیر از All Categories گزینش کرد، مقابل post_type عبارت download رو بنویسه. یعنی برای نمونه اگر دسته بندی Books رو گزینش کردم و واژه "آب" رو جستجو کردم، نشانی به این شکل در بیاد


?s=آب&post_type=download&submit=&cat=books

خواهش می کنم باز هم راهنماییم کن.

از کمک هات خیلی ممنونم

ویرایش شده در توسط DariushGreat
0

به اشتراک گذاری این پست


لینک به پست
سپاس از شما بله مشکل دسته بندی دوم دقیقا از همون ورودی پنهان دوم بود که برداشتمش و به جای cat در ورودی پنهان اصلی همون post_type شما رو نوشتم. با مطالعه چند نوشته پیرامون همین موضوع کدهای رو به شکل زیر دگرگون کردم:
 'All Catagories', 'show_option_none' => '', 'orderby' => 'ID', 'order' => 'ASC', 'show_count' => 1, 'hide_empty' => 0, 'child_of' => 0, 'exclude' => '', 'echo' => 1, 'selected' => 0, 'hierarchical' => 0, 'name' => 'cat', 'id' => '', 'class' => 'postform', 'depth' => 1, 'tab_index' => 0, 'taxonomy' => 'download_category', 'hide_if_empty' => false, 'value_field' => 'slug', ); ?>      دسته بندی:  

نشانی ای که فرم به شکل خام (بدون پر کردن) با گزینش دسته بندی Books برمیگردونه اینه:

 ?s=&post_type=&submit=&cat=books 

این نشونه خوبیه! یعنی تونستم کاری کنم که در کنار پست تایپ مثل آدم اسلاگ دسته بندی رو هم بیاره توی نشانی. الان فقط به یه ساختار شرطی نیاز دارم که بهش بفهمونم اگر دسته بندی ای غیر از All Categories گزینش کرد، مقابل post_type عبارت download رو بنویسه. یعنی برای نمونه اگر دسته بندی Books رو گزینش کردم و واژه "آب" رو جستجو کردم، نشانی به این شکل در بیاد

 ?s=آب&post_type=download&submit=&cat=books 

خواهش می کنم باز هم راهنماییم کن. از کمک هات خیلی ممنونم

خدمت شما:


<?php
$args = array(
'show_option_all' => 'All Catagories',
'show_option_none' => '',
'orderby' => 'ID',
'order' => 'ASC',
'show_count' => 1,
'hide_empty' => 0,
'child_of' => 0,
'exclude' => '',
'echo' => 1,
'selected' => 0,
'hierarchical' => 0,
'name' => 'cat',
'id' => '',
'class' => 'postform',
'depth' => 1,
'tab_index' => 0,
'taxonomy' => 'download_category',
'hide_if_empty' => false,
'value_field' => 'slug',
);
?>
<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/') ); ?>">
<input type="text" class="search-input" name="s" placeholder="<?php echo _('looking for something?','amirLiberary'); ?>" />
<input type="hidden" value="" name="post_type" id="myposttype"/>
<span> دسته بندی: <?php wp_dropdown_categories( $args ); ?></span>
<input type="submit" name="submit" class="search-botton" value="" onclick="changePostype();"/>
</form>
<script>
function changePostype()
{
var x = document.getElementById("cat");
var selectedValue = x.options[x.selectedIndex].value;
if(selectedValue == "0")
{
document.getElementById("myposttype").value = 'download';
}
}
</script>

ویرایش شده در توسط علی زینلی
1

به اشتراک گذاری این پست


لینک به پست

دم شما گرم

البته منظورم بر عکس این کد بود که خودم دستور شرطیشو نقیض کردم.

خیلی کمک کردی دوست من هر چی تشکر کنم کمه :wub:

مطمئنا راهنمایی هات برای بقیه هم مفید خواهد بود

ویرایش شده در توسط DariushGreat
1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط m3hrdaad
      با سلام.
      من تو وب سایتم یک فیلدی دارم برای جستجو پیشرفته محصولات استفاده میشه و به صورت آجاکسی هست (بخشی از نام محصول یادداشت میشه و محصولات لیست میشن). این فیلد دقیقا بالای منوی اصلی سایت هست و کاملا هم به درستی کار میکنه.
      مشکل من سر رنگ بندی نتایجی هست که بعد از تایپ بخشی از نام محصولات میاد. مثلا مطابق این عکس، من وقتی یک کلمه ای رو مینویسم، لیست محصولات مشخص میشه ولی هنوز منوی اصلی من مشخص هست. در حالیکه من میخوام منو زیر این لیست قرار بگیره. چون اینجوری تداخل در نوشته ها وجود داره.
      کسی میتونه کمکی کنه؟
      ممنون میشم از همه دوستان


    • توسط unid_user
      سلام و درود
      دوستان گرامی ، من یه فایل search.php ساختم و با دستور شرطی زیر گفتم اگه پست تایپ product بود نتایج رو نشون بده.
      <div class="woocommerce woocommerce-box"> <ul class="products"> <?php if ( post_type_exists( 'product' ) ) : while ( have_posts() ) : the_post(); ?> <li class="product"> <a class="woocommerce-LoopProduct-link woocommerce-loop-product__link" href="<?php the_permalink(); ?>"> <?php woocommerce_template_loop_product_thumbnail() ?> <h2 class="woocommerce-loop-product__title"><?php the_title(); ?></h2> <span class="price"> <?php woocommerce_template_loop_price() ?> </span> <?php woocommerce_template_loop_add_to_cart(); ?> </a> </li> <?php endwhile; ?> <?php else: ?> <?php endif; ?> </ul> </div> اما وقتی می خوام اسم یک مقاله رو توی قسمت جستجوی سایت وارد کنم. در صفحه نمایش جستجوها که کدهای بالا توش نوشته شده یک خطا میده. هرچند که اون مقاله هم نشون داده میشه.
      Fatal error: Call to a member function get_price_html() on null in /home2/tinymedi/public_html/wp-content/plugins/woocommerce/templates/loop/price.php on line 26 اولا راهی برای حل این مشکل وجود داره؟
      دوم اینکه میشه مثلا search-product.php ساخت و نتایج جستجو رو از search.php جدا نمایش بده؟
      با تشکر و سپاس
    • توسط cherry
      سلام
      یه کد میخوام که بتونم آخرین مطالب یک دسته بندی در پست تایپی خاص رو در هر جای وبسایت نمایش بدم
      پیشاپیش ممنون از راهنماییتون
    • توسط maraljoon
      سلام دوستان. وقتتون بخیر باشه.
      یه مشکلی با پست تایپ ها دارم که به هیچ صراطی مستقیم نیستن.
      من 2 پست تایپ ساختم. هردو به خوبی کار میکنن. ولی مشکل اینجاست که فقط در پست تایپ اولی ادامه مطلب و آرشیو دسته بندی ها نمایش داده میشه و کار میکنه. ولی برای پست تایپ دوم به همون روش قبلی سینگل و آرشیو میسازم.
      وقتی رو مطالبی که با پست تایپ دوم ساختم کلیک میکنم به برگه 404 میرسه. تو بخش آرشیو دسته بندی هاشم همینطوره.
      نمیدونم این مشکل از کجا آب میخوره..
      ممنون میشم کمکم کنید