رفتن به مطلب

قالب جستجو برای فرم جستجو پیشرفته بدون افزونه


پست های پیشنهاد شده

با سلام !

من درحال ایجاد یک فرم جستجو برای یک سایت هستم افزونه های مختلفی رو تست کردم ولای اونی که من میخوام نشدن به همین دلیل دنبال کدش گشتم اما به یک مشکالخ وردم

می خوام یک فرم جستجو درست کنم به همراه انتخاب تاکسومی که با اینش مشکلی ندارم

برای جستجو توی یک تاکسونوی خاص مثلا اسم تاکسونومی ژانر باشه با کد زیر تونستم فرم رو بسازم:


<form role="search" method="get" id="searchform" action="<?php bloginfo('home'); ?>/ff">
<div>
<input type="text" value="" name="s" id="s" />
<?php
function get_terms_dropdown($taxonomies, $args){
$myterms = get_terms($taxonomies, $args);
$optionname = "optionname";
$emptyvalue = "";
$output ="<select name='".$optionname."'><option selected='".$selected."' value='".$emptyvalue."'>Select a Category</option>'";
foreach($myterms as $term){
$term_taxonomy=$term->janr;
$term_slug=$term->slug;
$term_name =$term->name;
$link = $term_slug;
$output .="<option name='".$link."' value='".$link."'>".$term_name."</option>";
}
$output .="</select>";
return $output;
}
$taxonomies = array('janr');
$args = array('order'=>'ASC','hide_empty'=>true);
echo get_terms_dropdown($taxonomies, $args);
?>
<input type="submit" id="searchsubmit" value="Search" />
</div>
</form>

اما مشکل اینه که نمیخوام از قالب پیشفرض search.php استفاده بشه میخوام فرم اکشن بشه به یک برگه دیگه و توی اون برگه بررسی بشه پست با اون کلمه توی تاکسونمی که از لیست انتخاب شده هست و اونا رو توی حلقه نشون بده

ممنون میشم دوستان کمک کنن اون برگه رو بسازم

ویرایش شده توسط shima26
لینک به ارسال

به تگ form اضافه کنید


target="_blank"

تا در صفحه دیگه باز بشه اگر می خواهید قالب جداگانه برای نمایش نتایج داشته باشید این مطلب را بخوانید

https://codex.wordpress.org/Creating_a_Search_Page

یا فایل search.php در قالبتون ایجاد و شخصی سازیش کنید.

لینک به ارسال

ممنون اما مشکل اینه که توی اون صفحه نمی تونم مقدار تاکسونومی انتخابی رو بگیرم!

مشکل اصلی اینه که نمی تونم مقادیر رو بگیمم و توی برگه جستجو

یعنی فرم اکشن بشه به یک صفحه که توی اون صفحه مقادیر چک بشه و فقط توی همون تاکسونومی که از منوی بازشو انتخاب شده جستجو انجام بشه

الان اکشن فرم به برگه با آدرس localhost/ff هست کد های php برگه ff نمیدونم باید چی باشه؟

ویرایش شده توسط shima26
لینک به ارسال

نام سلکتور ترمهاتون باید term باشه که الان optionname گذاشتید

option ها نباید name داشته باشند تا نتیجشون در خروجی select قرار بگیره

اکشنتون باید


<?php bloginfo('url'); ?>

باشه

و تابعتون باید به فایل functions.php منتقل بشه یعنی این بخش بعد از اصلاح مواردی که عرض شد


function get_terms_dropdown($taxonomies, $args){
$myterms = get_terms($taxonomies, $args);
$optionname = "optionname";
$emptyvalue = "";
$output ="<select name='".$optionname."'><option selected='".$selected."' value='".$emptyvalue."'>Select a Category</option>'";
foreach($myterms as $term){
$term_taxonomy=$term->janr;
$term_slug=$term->slug;
$term_name =$term->name;
$link = $term_slug;
$output .="<option name='".$link."' value='".$link."'>".$term_name."</option>";
}
$output .="</select>";
return $output;
}

با رعایت این موارد اگر یک حلقه ی معمولی در فایل search.php در هر قالبی که خواستید بسازید باید نتایج رو درست نشون بده

ببخشید این مقدار هم باید تغییر کنه


$link = $term_slug;

به


$link = $term->ID;

لینک به ارسال

با تشکر از شما اگه درست متوجه شده باشم کد ها رو به این صورت وارد کردم که نتیجه ای در بر نداشت من زیاد حرفه ایی نیستم ممنون میشم یکم با جزئیات بیشتر توضیح بدید یک هقفته است امونمو بریده :|

اینا رو گذاشتم توی فایل functions.php


<?php
function get_terms_dropdown($taxonomies, $args){
$myterms = get_terms($taxonomies, $args);
$optionname = "term";
$emptyvalue = "";
$output ="<select><option selected='".$selected."' value='".$emptyvalue."'>Select a Category</option>'";
foreach($myterms as $term){
$term_taxonomy=$term->gener;
$term_slug=$term->slug;
$term_name =$term->name;
$link = $term->ID;
$output .="<option value='".$link."'>".$term_name."</option>";
}
$output .="</select>";
return $output;
} ?>

و این هم برای نمایش فرم


<form role="search" method="get" id="searchform" action="<?php bloginfo('url'); ?>">
<div>
<input type="text" value="" name="s" id="s" />
<?php
$taxonomies = array('gener');
$args = array('order'=>'ASC','hide_empty'=>true);
echo get_terms_dropdown($taxonomies, $args);
?>
<input type="submit" id="searchsubmit" value="Search" />
</div>
</form>

اما بعد از ارسال فرم توی کل سایت جستجو میکنه و اون تاکسونومی که انتخاب شده رو در نظر نمیگیره !!!!

مورد دیگه ایی هم که هست اینه که میخوام از این فرم دوتا توی یک صفحه بذارم

ویرایش شده توسط shima26
لینک به ارسال

1. کد


$taxonomies = array('gener');

باید قبل از


$myterms = get_terms($taxonomies, $args);

در functions.php قرار بگیره

2. تاکسونامیتون رو با چه کدهایی ساختید؟

3. مشخص کنید شما دقیقا می خواهید عبارت در تمام مطالبی که تاکسونامی gener دارند جستجو بشه یا می خواهید بین ترمها (دسته های تاکسونامی جستجو بشه)

مثلا فرض کنید تاکسونامی من عنوانش هست هنرمندان و نام صد خواننده در اون لیست شدند که از هر خواننده تعدادی مطلب در سایت داریم

حالا کاربر قراره نام خواننده دلخواهش رو جستجو کنه و ببینه در بین هنرمندان هست یا نه و یا مثلا آهنگ خاصی از افتخاری در سایت موجوده یا خیر (هرکدام راه خودش رو داره و خیلی با هم متفاوتند)

لینک به ارسال

استاد ممنون از لطفتون

با این کد ها تاکسونومی رو ساختم برای پست تایپ film


<?php
add_action( 'init', 'create_gener_taxonomy', 0 );
function create_gener_taxonomy() {
$labels = array(
'name' => _x( 'ژانر', 'taxonomy general name' ),
'singular_name' => _x( 'ژانر ', 'taxonomy singular name' ),
'search_items' => __( 'جستجوی ژانر ها' ),
'all_items' => __( 'همه ژانر ها' ),
'parent_item' => __( 'ژانر والد' ),
'parent_item_colon' => __( 'ژانر والد:' ),
'edit_item' => __( 'ویرایش ژانر' ),
'update_item' => __( 'به روز رسانی ژانر' ),
'add_new_item' => __( 'افزودن ژانر جدید' ),
'new_item_name' => __( 'نام ژانر جدید' ),
'menu_name' => __( 'ژانر ها' ),
);
$args = array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'gener' ),
);
register_taxonomy( 'gener', array( 'film' ), $args );

}
?>

توی سایت چند تا دسته برای تاکسونامی ژانر درست کردم مثلا درام هیجانی کمدی و.. که به مرورو اضافه میشه توسط کاربر حالا میخوام کلمه مورد نظر + اون ژانر که مثلا کمدی از لیست انتخاب میشه فقط جستجو بشه و لیست پست هایی ( فیلم هایی ) که شامل اون کلمه و در کمدی هستند جستجو بشه

(کمدی از لیست بازشو انتخاب میشه و ممکنه از لیست مثلا درام انتخاب بشه اونوقت باید اون کلمه در دسته درام جستجو بشه و لیست فیلم ها رو بیاره )

ویرایش شده توسط shima26
لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...