PDA

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



naghmesra
August 31st, 2017, 12:04
سلام و درود

توی کلاس wp_query برای مثلا اگر بخوایم پست های یه هفته پیش رو بگیریم باید پارامتر کلاس رو اینطوری وارد کنیم.



$query = new WP_Query(array('date_query' => array(array('before' => '1 week'))));

ولی به طرز معجزه آسایی اصلا مورد بالا جواب نمیده و باید از این کد استفاده کرد:



$query = new WP_Query(array('date_query' => array(array('after' => '1 week ago'))));

حالا خواهشا یکی از اساتید بیاد بگه که چرا کد اول که بسیار ملموس تر از کد دومه عمل نمیکنه ولی کد دوم عمل میکنه؟

تشکر

T.Toosi
August 31st, 2017, 12:38
باسلام، در کد اول از relative فرمت 1 week استفاده شده که تاریخ 1 هفته آینده را به شما میدهد، باید از 1 week ago استفاده کنید تا تاریخ 1 هفته گذشته را دریافت کنید.

naghmesra
August 31st, 2017, 12:57
باسلام، در کد اول از relative فرمت 1 week استفاده شده که تاریخ 1 هفته آینده را به شما میدهد، باید از 1 week ago استفاده کنید تا تاریخ 1 هفته گذشته را دریافت کنید.

آخه شما after => '1 week ago' رو به فارسی ترجمه کنید مسخره میشه معنیش میشه بعد از یه هفته پیش توی before هم که ago بدی بازم جواب نمیده.

در کل خوب یه پارامتر میذاشت اگر before میخواستیم که ago میذاشتیم نمیخواستیم هم نمیذاشتیم دیگه.

فلسفه این حرکت رو نمیفهمم.

لطفا بیشتر توضیح بدید.

T.Toosi
August 31st, 2017, 13:12
آخه شما after => '1 week ago' رو به فارسی ترجمه کنید مسخره میشه معنیش میشه بعد از یه هفته پیش توی before هم که ago بدی بازم جواب نمیده.

در کل خوب یه پارامتر میذاشت اگر before میخواسم که ago یذاشتیم نمیخواستیم هم نمیذاشتیم دیگه.

فلسفه این حرکت رو نمیفهمم.

لطفا بیشتر توضیح بدید.

ببینید 1 week اگر timestamp ـش را از strtotime بگیریم و تبدیل به تاریخ خوانا بکنیم خروجی میشه : 09/07/2017 (تاریخ 1 هفته آینده از امروز است) در کد اول گفتید پست های قبل این تاریخ را بگیر، حالا اگر نمایش نمیدهد به دلیل post per page یا لیمیت بودن دریافت query است که اگر زیاد کنید احتمالا پست های آخرتون را میبینید مگر اینکه کلا روی سایت پست نباشد، در کد دوم خروجی تاریخ خوانا میشود : 08/24/2017 (تاریخ 1 هفته گذشته از امروز است) که اگر به طور مثال post per page پنج تا باشد و از after استفاده کرده باشید، 5 تا پستی که بعد از تاریخ 08/24/2017 در سایت ثبت شده باشد به شما نمایش میدهد.

فرمت های 1 week ago یا +1 week ago یا 1 week ago برای دریافت تاریخ دقیق توسط تابع strtotime است، before و after برای طریقه compare و query زدن وردپرس بروی تاریخ بدست آمده در دیتابیس است.

naghmesra
August 31st, 2017, 13:26
ببینید 1 week اگر timestamp ـش را از strtotime بگیریم و تبدیل به تاریخ خوانا بکنیم خروجی میشه : 09/07/2017 (تاریخ 1 هفته آینده از امروز است) در کد اول گفتید پست های قبل این تاریخ را بگیر، حالا اگر نمایش نمیدهد به دلیل post per page یا لیمیت بودن دریافت query است که اگر زیاد کنید احتمالا پست های آخرتون را میبینید مگر اینکه کلا روی سایت پست نباشد، در کد دوم خروجی تاریخ خوانا میشود : 08/24/2017 (تاریخ 1 هفته گذشته از امروز است) که اگر به طور مثال post per page پنج تا باشد و از after استفاده کرده باشید، 5 تا پستی که بعد از تاریخ 08/24/2017 در سایت ثبت شده باشد به شما نمایش میدهد.

فرمت های 1 week ago یا +1 week ago یا 1 week ago برای دریافت تاریخ دقیق توسط تابع strtotime است، before و after برای طریقه compare و query زدن وردپرس بروی تاریخ بدست آمده در دیتابیس است.

آقا شرمنده انگار من خیلی خنگم.

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



$query = new WP_Query(array('date_query' => array(array('before' => '1 month'))));
$query = new WP_Query(array('date_query' => array(array('after' => '1 month'))));

اصلا دو کد بالا معنی داره؟

T.Toosi
August 31st, 2017, 13:37
آقا شرمنده انگار من خیلی خنگم.

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



$query = new WP_Query(array('date_query' => array(array('before' => '1 month'))));
$query = new WP_Query(array('date_query' => array(array('after' => '1 month'))));

اصلا دو کد بالا معنی داره؟

1- پست هایی که قبل از تاریخ 08/31/2017 (تاریخ یک ماه آینده از امروز) در سایت ثبت شده است دریافت میکند.
2- پست هایی که بعد از تاریخ 08/31/2017 (تاریخ یک ماه آینده از امروز) در سایت ثبت شده است دریافت میکند.

naghmesra
August 31st, 2017, 14:02
1- پست هایی که قبل از تاریخ 08/31/2017 (تاریخ یک ماه آینده از امروز) در سایت ثبت شده است دریافت میکند.
2- پست هایی که بعد از تاریخ 08/31/2017 (تاریخ یک ماه آینده از امروز) در سایت ثبت شده است دریافت میکند.

توضیح خوبی بود.
در اصل:


1- پست هایی که قبل از تاریخ 08/31/2017 (تاریخ یک ماه آینده از امروز) در سایت ثبت شده است دریافت میکند.
این همیشه کل پست های سایت میشه.


2- پست هایی که بعد از تاریخ 08/31/2017 (تاریخ یک ماه آینده از امروز) در سایت ثبت شده است دریافت میکند.
این هم همیشه خالی میشه.

درسته؟

حالا بی زحمت این دو مورد رو با ago هم بگید یعنی 1 month ago دیگه شرمنده میکنید.

T.Toosi
August 31st, 2017, 14:09
توضیح خوبی بود.
در اصل:


این همیشه کل پست های سایت میشه.


این هم همیشه خالی میشه.

درسته؟

حالا بی زحمت این دو مورد رو با ago هم بگید یعنی 1 month ago دیگه شرمنده میکنید.

بله مورد دومی بی کاربرد است چون آینده است.

تاریخ امروز : 08/31/2017 (month/day/year)
تاریخ یک ماه گذشته از امروز : 07/31/2017 (month/day/year)

1- پست هایی که قبل از تاریخ 07/31/2017 در سایت ثبت شده است دریافت میکند.
2- پست هایی که بعد از تاریخ 07/31/2017 در سایت ثبت شده است دریافت میکند.

naghmesra
August 31st, 2017, 14:15
بله مورد دومی بی کاربرد است چون آینده است.

تاریخ امروز : 08/31/2017 (month/day/year)
تاریخ یک ماه گذشته از امروز : 07/31/2017 (month/day/year)

1- پست هایی که قبل از تاریخ 07/31/2017 در سایت ثبت شده است دریافت میکند.
2- پست هایی که بعد از تاریخ 07/31/2017 در سایت ثبت شده است دریافت میکند.

آقا عالی بود کاملا ابهامات رفع شد.

موفق باشید