• اطلاعیه ها

    • Morteza

      باهم بسازیم: اطلس ووکامرس و وردپرس   14/07/96

      تاپیک ایجاد شده برای بحث در جهت ایجاد یک منبع، ویکی، صفحات توضیحی و یا بخش آموزشی جامع برای وردپرس و متعلقات مختلف آن است. لطفا جهت مشارکت در این بحث، ارائه پیشنهاد و یا انتقاد به تاپیک فوق مراجعه کنید. باهم بسازیم: اطلس ووکامرس و وردپرس
Anisi

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

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

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

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

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

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


$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
2

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


لینک به پست

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

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

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

3

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


لینک به پست

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

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

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

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

ممنون

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


$args['posts_per_page']= 15;

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

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


لینک به پست
2

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


لینک به پست

ممنون

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

0

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


لینک به پست

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

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

1

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


لینک به پست

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

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

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


//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>';
}

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

0

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


لینک به پست

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

1

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


لینک به پست

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

من جای شما بودم کمتر از 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
0

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


لینک به پست

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

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

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

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


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

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

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


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