PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال در مورد wp_query



naghmesra
June 15th, 2017, 13:20
سلام و درود

سوال اول : اگر ما دو تا حلقه wp_query توی هم دیگه داشته باشیم به شکل زیر:


$query = new WP_Query($args);

while ($query->have_posts()) :

$inner_query = new WP_Query($inner_args);
while ($inner_query->have_posts()) :
// do something
endwhile;
endwhile;

باید برای هر wp_query یه wp_reset_postdata گذاشت یا فقط برای حلقه بیرونی بذاریم کافیه؟

سوال دوم : اگر به شکل زیر از wp_query استفاده کنیم:


$query = new WP_Query(array('meta_key' => 'my_meta_key', 'meta_value' => 'my_meta_value');
echo $query->found_posts;

یعنی فقط از حلقه اطلاعات بگیریم که در مثال بالا تعداد پست رو گرفتم بازم احتیاج به wp_reset_postdata هست؟

تشکر

T.Toosi
June 15th, 2017, 14:26
سلام، در سوال اول چون wp_query دوم داخل حلقه است و دوباره شی wp query ساخته می شود reset post data ضروری هست پس از پایان حلقه (دوم) قرار بگیرد، اگر بعد از wp_query اول (که داخل حلقه پست هایش دوباره wp_query زده بودید) wp_query دیگری نمیسازید و استفاده نمیکنید reset post data ضروری نیست. نکته ای که هست شامل سوال دومتون هم میشه، هر زمان بعد از ساخت شی wp_query، دوباره شی دیگری از wp_query ساختید reset post data لازم است.

naghmesra
June 15th, 2017, 14:33
درود مجدد

پس طبق توضیح شما wp_reset_postdata صرفا برای حلقه ای استفاده میشود که قبلش حلقه wp_query دیگری بوده است؟

در مورد دوم چون while نداره wp_reset_postdata رو کجای حلقه باید استفاده کرد؟

تشکر

naghmesra
June 16th, 2017, 02:47
جمع بندی تاپیک جهت استفاده دوستان در آینده


پس طبق توضیح شما wp_reset_postdata صرفا برای حلقه ای استفاده میشود که قبلش حلقه wp_query دیگری بوده است؟

در مورد دوم چون while نداره wp_reset_postdata رو کجای حلقه باید استفاده کرد؟

طبق مستندات وردپرس در رابطه با کلاس WP_Query (https://codex.wordpress.org/Class_Reference/WP_Query) تابع wp_reset_postdata زمانی باید فراخوانی شود که ما در حلقه خود از تابع the_post استفاده کرده باشیم. در نتیجه در مورد سوال دوم پست اول این تاپیک احتیاجی به استفاده از تابع wp_reset_postdata نیست.

موفق باشید