maral_hamidi 82 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 سلام دوستان گرامی.. وقت بخیر همونطور از عنوان مشخصه بدنبال راهی هستم که بشه فرم جستجویی ساخت که فقط در کاستوم فیلد جستجو کنه. در فیلد خاصی که توسط افزونه advance custom field ساخته میشه آیا عملا این مورد امکان پذیر هست تو وردپرس؟؟ تشکر نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 سلام و درود بله ممکن هست. هم بر روی حلقه اصلی ممکنه و هم بر روی حلقه های ثانویه. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 (ویرایش شده) در ۱ ساعت قبل، mehran-b گفته است : سلام و درود بله ممکن هست. هم بر روی حلقه اصلی ممکنه و هم بر روی حلقه های ثانویه. سلام.. میشه توضیح بدید که چطور اینکارو انجام بدم؟؟ و اینکه منظور از حلقه ثانویه چیه؟؟ فرض کنید field name اون کاستوم فیلدی که اطلاعات توش ذخیره میشه test باشه. چطور میشه فرم جستجو رو بر اساس این فیلد ساخت؟ تشکر ویرایش شده مهر 96 توسط maraljoon نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 درود مجدد نحوه ساخت فرمش رو موندید یا بخش بک اِندش؟ نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 در 1 دقیقه قبل، mehran-b گفته است : درود مجدد نحوه ساخت فرمش رو موندید یا بخش بک اِندش؟ یجورایی هر دوش.. نمیتونم تحلیلش کنم که چطور فرمی که مسازم ارتباط پیدا کنه با اون متا؟؟ نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 در 15 دقیقه قبل، maraljoon گفته است : یجورایی هر دوش.. نمیتونم تحلیلش کنم که چطور فرمی که مسازم ارتباط پیدا کنه با اون متا؟؟ درود مجدد فرانت اِند <form method="get" action="<?php echo esc_url(home_url('/')); ?>"> <input type="text" placeholder="جستجو ..." name="meta_test"> <input type="submit" value="جستجو کن"> </form> بک اِند add_filter('query_vars', function ($vars) { $vars[] = 'meta_test'; return $vars; }); add_action('pre_get_posts', function ($query) { if($query->is_home() && $query->is_main_query()) { if(get_query_var('meta_test', false)) { $query->set('meta_query', array( array( 'key' => 'test', 'value' => get_query_var('meta_test'), 'compare' => 'LIKE' ) )); } } }); 1 نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 در 25 دقیقه قبل، mehran-b گفته است : درود مجدد فرانت اِند <form method="get" action="<?php echo esc_url(home_url('/')); ?>"> <input type="text" placeholder="جستجو ..." name="meta_test"> <input type="submit" value="جستجو کن"> </form> ببخشید. اون meta_test که گذاشتید دلیل خاصی داره؟؟ نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 در هم اکنون، maraljoon گفته است : ببخشید. اون meta_test که گذاشتید دلیل خاصی داره؟؟ اون کوئری استرینگی هست که به آدرس صفحه بعد از زدن دکمه جستجو کن اضافه میشه و سپس ما اومدیم با فیلتر query_vars این متغییر رو به کوئری های وردپرس اضافه کردیم و سپس توی اکشن pre_get_posts این کوئری رو میخونیم اگر خالی نباشه میام روی لوپ اصلی اعمال میکنیم واژه سرچ شده رو. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 در 2 دقیقه قبل، mehran-b گفته است : یخورده گیج شدم. نتایج جستجو رو باید چطور نمایش بدیم؟ نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 در هم اکنون، maraljoon گفته است : یخورده گیج شدم. نتایج جستجو رو باید چطور نمایش بدیم؟ توی این حالت نتیجه روی حلقه صفحه اصلی اعمال میشه. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 (ویرایش شده) در 4 دقیقه قبل، mehran-b گفته است : توی این حالت نتیجه روی حلقه صفحه اصلی اعمال میشه. میشه تغییرش داد که مثلا توی یک صفحه به اسم search.php نتایج رو نشون بده؟؟ با تغییر اکشن درست میشه؟ ویرایش شده مهر 96 توسط maraljoon نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 در هم اکنون، maraljoon گفته است : میشه تغییرش داد که مثلا توی یک صفحه به اسم search.php نتایج رو نشون بده؟؟ وقتی صفحه search.php فراخوانی میشه که متغییر کوئری s که برای بخش اصلی سرچ وردپرس هست پر بشه. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 آی کیوم پایین اومده. کدهایی که نوشتید رو استفاده کردم ولیتو صفحه اول نتیجه ای ندارم وقتی متغییر کوئری s هم استفاده کنم نتایج رو تو اون صفحه دلخواه نمایش میده. ولی بصورت جستجوی کلی وردپرس نه کاستوم فیلد نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 کد رو تست کردم مشکلی نداره. چرا حالا صفحه search.php که رزور شده است رو میخواید استفاده کنید؟ نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 در 1 دقیقه قبل، mehran-b گفته است : کد رو تست کردم مشکلی نداره. چرا حالا صفحه search.php که رزور شده است رو میخواید استفاده کنید؟ مشکلی نیست. صفحه جدیدی براش میسازم. ولی خب به همون شکل اولش هم که شما فرمودین تو صحفحه اولم نتیجه ای ندارم. خودمم نمیدونم دقیقا دارم چیکارمیکنم. فقط آدرس url تغییر میکنه ولی نتیجه ای ندارم. کجا باید نتیجه نمایش داده بشه؟؟ نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 نقل قول مشکلی نیست. صفحه جدیدی براش میسازم. ولی خب به همون شکل اولش هم که شما فرمودین تو صحفحه اولم نتیجه ای ندارم. خودمم نمیدونم دقیقا دارم چیکارمیکنم. فقط آدرس url تغییر میکنه ولی نتیجه ای ندارم. کجا باید نتیجه نمایش داده بشه؟؟ وقتی شما فرم رو میذاری توی صفحه اصلی و توی تابع اکشن pre_get_posts رو به روی جایی که نوشته key اسم واقعی متا رو جای test بزنید و بیاید از فرم اقدام به جستجو کنید عمل میکنه. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 در 13 دقیقه قبل، mehran-b گفته است : وقتی شما فرم رو میذاری توی صفحه اصلی و توی تابع اکشن pre_get_posts رو به روی جایی که نوشته key اسم واقعی متا رو جای test بزنید و بیاید از فرم اقدام به جستجو کنید عمل میکنه. خیلی خیلی ممنونم. درسته. یک جای کارو اشتباه میرفتم. تا اینجای کار که درست پیش رفت.. یک سوال دیگه: فرض کنید اطلاعاتی که توسط این کاستم فیلد ذخیره میشن تعدادش زیاده. حالا من میخوام مثلا دو تا یا سه تا یا چند تا از این مقادیری رو که توسط این فیلد test ذخیر شدن رو باهم جستجو کنم. فرض میکنیم برای هر مطلبی که منتشر میشه یک جدول حاوی چند تامقدار توسط این کاستوم فیلد ذخیره میشه. مثلا برای پست 1 پنج رنگ قرمز ، آبی ، زرد ، بنفش، صورتی ثبت میشه. برای مطلب دوم 3 رنگ ابی ، قرمز ، صورتی . برای مطلب سوم فقط 1 رنگ قهوه ای. برای مطلب چهارم 4 رنگ آبی ، قرمز، زرد، صورتی ، قهوه ای حالا میخوام تو سرچ مثلا بنویسم قرمز - آبی - صورتی. و نتیجه طبیعاتا میشه مطلب اول دوم و چهارم یعنی از فرم جستجو میخوام مطالبی رو به من نشون بده که سه رنگ قرمز، آبی و صورتی توشون مشترک باشه. توی سرچ معمولی وردپرس وقتی این سه تا واژه رو با دش در کنار هم سرچ میکنم نتیجه درست رو نمایش میده. ولی تو این فرمی که لطف کردید برای کاستوم فیلد با این روش نمایش نمیده.. راه حلی برای این دارید؟؟ تو جستجوی وردپرس به این شکل سرچ میکردم قرمز - آبی - صورتی نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 یعنی در اصل این کاستوم فیلدی که اسمش مثلا test هست یه سلکت باکسه با چند گزینه مشخص؟ نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 (ویرایش شده) در 9 دقیقه قبل، mehran-b گفته است : یعنی در اصل این کاستوم فیلدی که اسمش مثلا test هست یه سلکت باکسه با چند گزینه مشخص؟ نه. هر پستی که قراره منتشر بشه یه کاستوم فیلد هم اضافه شده بصورت ویرایشگر دیداری که من بصورت دستی توش یه مواردی رو وارد میکنم. برای مثال همون رنگ ها. سلکت باکس نیست. یه جدول هست که بصورت دستی وارد میکنم و تو هر td اون جدول یه مقدار وارد میکنم. یکی قرمز یکی آبی و ... وقتی با سرچ معمولی به این شکل قرمز - آبی - صورتی سرچ میکنم تمام پست هایی رو که این موارد توشون مشترک هست رو برام میاره. ولی تو این فرم جدید که بر اساس کاستوم فیلد هست فقط میتونم مثلا قرمز رو بزنم یا آبی. فقط یک مورد. با اون شکل سرچ قبلی که کنار هم سرچ کنم نتیجه ای نمایش نمیده ویرایش شده مهر 96 توسط maraljoon نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 والا متوجه نشدم چون تا به حال با ACF کار نکردم. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 در 6 دقیقه قبل، mehran-b گفته است : والا متوجه نشدم چون تا به حال با ACF کار نکردم. ببخشید من خوب توضیح نمیدم. پوزش. البته خیلی این بخش جدول و باقی قضایا مهم نیست. شما اون کاستوم فیلدهارو برچسب در نظر بگیرد. برچسب های نوشته های وردپرس. فرض کنید ما 4 تا مطلب داریم تو سایت. و هر مطلب طبق روال معمول تعدادی برچسب دارن. 3 تا از این 4 پست برچسب های تقریبا مشابه ای دارن. برای مثال پست 1 و پست 2 و پست 3 ، 10 تا برچسب دارن ولی 5 تا برچسب از این 10 تا بین این 3 مطلب وردپرس مشترک هستند. حالا وقتی من این برچسب هارو به این شکل: قرمز - آبی - صورتی تو فرم سرچ معمولی سرچ میکنم نتیجه دقیق بهم میده. اون سه تا مطلب رو برام تو نتایج میاره. ولی مطلب چهارمی رو نمیاره چون اون 3 تا برچسب رو تو خودش نداره. اگه سایتی دارید که برچسباشو میدونید چیا هستن یه زحمتی بکشید به این شکل که گفتم سرچ کنید. نتیجه جالبه. فقط تو این فرم جستجوی کاستوم فیلد دیگه نمیتونم چندتا کلید واژه رو کنار هم با - (دش) سرچ کنم. فقط یک مورد رو قبول میکنه. نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 برای این چیزی که میخواید باید تابع مربوط به اکشن pre_get_posts رو ویرایش کنید به شکل زیر: add_action('pre_get_posts', function ($query) { if($query->is_home() && $query->is_main_query()) { if(get_query_var('meta_test', false)) { $rspace = str_replace(" ", "-", get_query_var('meta_test')); $words = explode("-", $rspace); $trimed_words = array_map('trim', $words); $array = array(); foreach($trimed_words as $word) $array = array_merge($array, array( array( 'key' => 'test', 'value' => $word, 'compare' => 'LIKE' ) )); if(count($array) > 1) $array = array_merge($array, array( 'relation' => 'AND' )); $query->set('meta_query', $array); } } }); تابع فوق میاد ابتدا واژه های وارد شده در فیلد مربوطه رو بر اساس Space یا Dash میشکونه و سپس برای هر واژه وارد شده یه کوئری ایجاد میکنه به این شکل عملکرد مانند بخش سرچ وردپرس میشه. توجه داشته باشید که باید اون test رو با کلید کاستوم فیلد مورد نظرتون جایگزین کنید. 1 نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 در 56 دقیقه قبل، mehran-b گفته است : عالی بود. تشکر فراوان نتیجه عالی و بی نقص. دیقا همون نتیجه ای که میخواستم نمایش داد. ممنون که تو انجمن اینقدر با حوصله جواب افراد رو میدید. روزی که با وردپرس شروع کردم فکرشو نمیکردم که اینقدر قابلیت گسترش داشته باشه. الان تازه میفهم هیچی از برنامه نویسی و هیچی از وردپرس نمیدونم. 1 نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مهر 96 گزارش بازنشر ارسال شده در مهر 96 نقل قول عالی بود. تشکر فراوان خواهش میکنم. نقل قول روزی که با وردپرس شروع کردم فکرشو نمیکردم که اینقدر قابلیت گسترش داشته باشه. الان تازه میفهم هیچی از برنامه نویسی و هیچی از وردپرس نمیدونم. بله وردپرس به خاطر استفاده از سیستم هوکینگ قابلیت توسعه پذیری بسیار بالایی داره. موفق باشید 1 نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در مهر 96 مالک گزارش بازنشر ارسال شده در مهر 96 امیدوارم کسانی که دنبال چنین موضوعی هستن از این مطلب مفید استفاده کنن. خیلی گویا و روان. الان دارم فکر میکنم چقدر میشه این فرم رو گسترش داد و چیز خوبو کاملی از توش در میاد 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .