shima26

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

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

ارسال شده در (ویرایش شده)

با سلام !

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

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

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


<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
0

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


لینک به پست

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


target="_blank"

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

https://codex.wordpress.org/Creating_a_Search_Page

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

2

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


لینک به پست

ارسال شده در (ویرایش شده)

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

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

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

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

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

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


لینک به پست

نام سلکتور ترمهاتون باید 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;

0

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


لینک به پست

ارسال شده در (ویرایش شده)

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

اینا رو گذاشتم توی فایل 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
0

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


لینک به پست

1. کد


$taxonomies = array('gener');

باید قبل از


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

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

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

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

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

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

1

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


لینک به پست

ارسال شده در (ویرایش شده)

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

با این کد ها تاکسونومی رو ساختم برای پست تایپ 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
0

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


لینک به پست

اکشن فرمتون رو بگذارید


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

وتست کنید

1

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


لینک به پست

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

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

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

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


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

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

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


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