رفتن به مطلب

جستجو در فیلدهای اضافی


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

سلام به دوستان

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

کد به صورت زیر هست:


$args = array();
$args['post_type'] = 'post';
$args['cat'] = 1;
if(!empty($_GET['dname']) or !empty($_GET['dlname']) or !empty($_GET['specialty']))
{
$args['meta_query'] = array();
if(!empty($_GET['dname']))
{
$name = esc_attr($_GET['dname']);
$args['meta_query'][] = array(
'key' => 'doctor_name',
'value' => $name,
'compare' => 'LIKE'
);
}
if(!empty($_GET['dlname']))
{
$lname = esc_attr($_GET['dlname']);
$args['meta_query'][] = array(
'key' => 'doctor_lname',
'value' => $lname,
'compare' => 'LIKE'
);
}
if(!empty($_GET['specialty']))
{
$spe_all = array();
foreach($_GET['specialty'] as $spe)
{
$spe_all[] = esc_attr($spe);
}
$args['meta_query'][] = array(
'key' => 'doctor_specialty',
'value' => $spe_all,
'compare' => 'IN'
);
}
}
$the_query = new WP_Query($args);

نمونه اجرا شدش رو هم می تونید توی آدرس زیر ببینید:

http://www.bezeshk.c...سته/پزشکان-یزد/

حالا مثلا این مشکلی هست که مقدار ورودی از get رو با تابع esc_attr، eascape کردم؟

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

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

ممنون

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

نکته ای که در استفاده از متاکوئری مهم هست مشخص کردن نوع پست هست که شما رعایت کردید

اسکیپ کردن مشکلی ندارد. هر چند خود وردپرس احمالا چنین کاری رو انجام میده

دوبار؟ منظورتون صفحه بندی هست. شما باید مقدار page رو هم تنظیم کنید

لینک به ارسال

نکته ای که در استفاده از متاکوئری مهم هست مشخص کردن نوع پست هست که شما رعایت کردید

اسکیپ کردن مشکلی ندارد. هر چند خود وردپرس احمالا چنین کاری رو انجام میده

دوبار؟ منظورتون صفحه بندی هست. شما باید مقدار page رو هم تنظیم کنید

ممنون

بله! اگر مشاهده کرده باشید، برای نتایج دو صفحه اومده، ولی نتایج هر دو صفحه یکسان هست! کد زیر رو هم به کوئری اضافه کردم ولی هنوز مشکل پابرجاست:


$args['posts_per_page']= 15;

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

ممنون

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

لینک به ارسال

از افزونه واسه صفحه بندی استفاده میکنید؟

بهتره قبل از کوئری ریست رو قرار دهید

لینک به ارسال

از افزونه واسه صفحه بندی استفاده میکنید؟

بهتره قبل از کوئری ریست رو قرار دهید

نه. از این تابع استفاده می کنم:


//Navigation Function
function wp_corenavi() {
global $wp_query, $wp_rewrite;
$pages = '';
$max = $wp_query->max_num_pages;
if (!$current = get_query_var('paged')) $current = 1;
$a['base'] = str_replace(999999999, '%#%', get_pagenum_link(999999999));
$a['total'] = $max;
$a['current'] = $current;

$total = 1; //1 - display the text "Page N of N", 0 - not display
$a['mid_size'] = 10; //how many links to show on the left and right of the current
$a['end_size'] = 1; //how many links to show in the beginning and end
$a['prev_text'] = 'صفحه قبل'; //text of the "Previous page" link
$a['next_text'] = 'صفحه بعد'; //text of the "Next page" link

if ($max > 1) echo '<div class="pagination">';
if ($total == 1 && $max > 1) $pages = '<span class="pages">صفحه ' . $current . ' از ' . $max . '</span>'."\r\n";
echo $pages . paginate_links($a);
if ($max > 1) echo '</div>';
}

ریست رو هم قرار دادم. تفاوتی نکرد. اصلا نباید صفحه دومی رو بیاره، نمی دونم چرا میاره!

لینک به ارسال

من جای شما بودم کمتر از wp_query استفاده میکردم و بیشتر از query_posts استفاده میکردم

لینک به ارسال

من جای شما بودم کمتر از wp_query استفاده میکردم و بیشتر از query_posts استفاده میکردم

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

ممنون درست شد. پس کد کامل شده به صورت زیر هست:


<?php
$args = array();
$args['post_type'] = 'post';
$args['cat'] = 17;
$args['paged'] = (get_query_var('paged')) ? get_query_var('paged') : 1;
if(!empty($_GET['dname']) or !empty($_GET['dlname']) or !empty($_GET['specialty']))
{
$args['meta_query'] = array();
if(!empty($_GET['dname']))
{
$name = esc_attr($_GET['dname']);
$args['meta_query'][] = array(
'key' => 'doctor_name',
'value' => $name,
'compare' => 'LIKE'
);
}
if(!empty($_GET['dlname']))
{
$lname = esc_attr($_GET['dlname']);
$args['meta_query'][] = array(
'key' => 'doctor_lname',
'value' => $lname,
'compare' => 'LIKE'
);
}
if(!empty($_GET['specialty']))
{
$spe_all = array();
foreach($_GET['specialty'] as $spe)
{
$spe_all[] = esc_attr($spe);
}
$args['meta_query'][] = array(
'key' => 'doctor_specialty',
'value' => $spe_all,
'compare' => 'IN'
);
}
}
query_posts($args);
?>

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

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

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

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

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

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

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

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

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

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