array( 'meta_value_num' => 'DESC', 'title' => 'ASC' ), 'm ...' /> array( 'meta_value_num' => 'DESC', 'title' => 'ASC' ), 'm ...' />
۲ شهریار حسین زاده
سوال در رابطه کوئری‌های WP_Query
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۰۶ آذر ۱۴۰۱

سلام و درود

بنده چنتا کوئری و متوجه نشدم اگر میشه بیشتر توضیح بدین ممنون میشم

$args = array(
	'orderby' => array( 'meta_value_num' => 'DESC', 'title' => 'ASC' ),
	'meta_key' => 'age'
);
$query = new WP_Query( $args );

در کوئری بالا اگر meta_value_num را نزاریم هم کار میکنه , میخواستم بدونم اگر ثابت هست که خب باید باشه پس چرا بر میداریم باز هم کار میکنه ؟

و اینکه در مستنداتش فکر کنم نوشته بود برای integer هاست , اگر string بود میتونیم نزاریمش؟

خب پس در این صورت ثابت هست و برای integer هست ؟ در کل لزوم بودنش چی هست ؟

و میخواستم بدونم title برامون چه کاری و انجام میده ؟

اگر meta_value_num بر اساس مقداره meta_key هست و به صورت DESC هست پس title چه کاری انجام میده ؟

و در کل لزومه بودن title چی هست ؟ 

چون همین کارهارا با order هم میشه انجام داد

$args = array(
	'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' )
);
$query = new WP_Query( $args );

در کوئری بالا استاد فرمودند , برای منوهاست

منظور کدام منو‌ها میباشد ؟ 

چون من تست کردم متوجه نشدم و در مستندات هم نوشته order by page 

$q = new WP_Query( array(
  'meta_query' => array(
    'relation' => 'AND',
    'state_clause' => array(
      'key' => 'state',
      'value' => 'Wisconsin',
    ),
    'city_clause' => array(
      'key' => 'city',
      'compare' => 'EXISTS',
    ),
  ),
  'orderby' => array(
    'city_clause' => 'ASC',
    'state_clause' => 'DESC',
  ),
) );

در کوئری بالا city , state مقدار key ما میباشند 

ولی state_clause و city_clause از کجا آمده اند ؟

و اینکه در قسمت city_clause که key را مساوی city گذاشته است value مساوی چی هست ؟

یعنی میخواهم بپرسم اگر value را مشخص نکنیم از value شرط قبلی میخونه ؟

چون اگر اشتباه نکنم استاد فرمودند compare که در شرط city_clause هست روی بالایی تاثیر میزاره 

پس یعنی مقداری city هم میشه wisconsin ؟

ممنونم از وقتی که میزارین و سوالات من را میخونین و جواب میدین

با سلام

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

کد زیر:

$args = array(
	'orderby'  => array( 'meta_value_num' => 'DESC', 'title' => 'ASC' ),
	'meta_key' => 'age'
);
$query = new WP_Query( $args );

در این کوئری پست هایی که مقدار کلید Age انها وجود دارد به صورت نزولی قرار میگیرند و در مواردی که مقدار کلید age در آنها برابر است و یا تعریف نشده است از عنوان پست به صورت صعودی استفاده می‌شود.

با این تفاسیر کلید meta_value_num بدون خاصیت نیست و value کلید age را برمیگرداند.

meta_value_num برای مقایسه عددی است و اگر مقایسه رشته ای مد نظر دارید باید از meta_value استفاده کنید که از string پشتیبانی می‌کند پس مجدد که فرموده بودید "نزاریم میشه" باید گفت خیر و کاملا نتیجه ترتیب رو تغییر میده ( مفهومی تحت عنوان کاربردی ندارد نداریم).

پرسیدید "title چه کاری برامون میکنه": بالاتر توضیح دادم و باید بدونید که ترتیب بندی برحسب عنوان پست با شرایط بالا رو انجام میده.


خب سوال بعدی شما:

شما کد زیر رو ارسال کردید:

$args = array(
	'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' )
);
$query = new WP_Query( $args );

در این بخش که فرمودید menu_order چیست، این مورد مروبط به ترتیب دهی دستی و اولویت بخشیدن به صفحات از طریق متاباکس هست. استاد به اشتباه به منوها اشاره کردند ولی این مورد ارتباطی به فهرست‌ها ندارد - بیشتر برای برگه‌ها کاربرد دارد و شما میتوانید از طریق ادیت صفحه ترتیب نمایش برگه را وارد کنید، این مقدار به صورت پیشفرض برای همه پست‌ها صفر در نظر گرفته میشود مگر تنظیم گردد.

به صورت دیفالت هم فعال نیست مگر با کدی مثل زیر انرا فعال کنید:

add_action( 'admin_init', 'enable_page_order_by_Behnam_Moradi' );
function enable_page_order_by_Behnam_Moradi() 
{
    add_post_type_support( 'post', 'page-attributes' );
}

سپس از بخش ویرایش برگه یا پست و قسمت Page Attributes به ان دسترسی دارید.


خب بعدی ?

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ),
    ),
    'orderby' => array(
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

سوالات شما درباره کد بالا:

"state_clause و city_clause از کجا آمده اند ؟" پاسخ: دو مقدار مد نظر شما یک نام دلخواه هستند که در کوئری تعریف شده اند، در واقع شما میگید که یک شرط تعریف میکنم با نام state_caluse و دیگری city_clause خب بعد پایین‌تر در قسمت orderby میگید دو شرط با نام‌های مشخصی که تعریف کردم یکی به صورت صعودی و دیگری نزولی برروی کوئری من اعمال شود.

"در قسمت city_clause که key را مساوی city گذاشته است value مساوی چی هست ؟" > پاسخ: در این شرط مقدار vlue مستقیم مورد بحث نیست و گفته میشود که بررسی از نوع Compare و Exists بروری این کلید انجام شود.

سه سوال اخر شما هم مربوط به همین مورد هست.


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

به امید ثروت روز افزون?

بهترین پاسخ
بهنام مرادی ۰۷ آذر ۱۴۰۱، ۱۴:۱۹

سلام و درود

ممنونم از صبر و حوصلتون و پاسخی که دادین

اگر از علامت‌های سوال بنده هم ناراحت شدین پوزش میخوام سعی کردم کل سوالات این جلسمو یکجا بپرسم

شهریار حسین زاده ۰۷ آذر ۱۴۰۱، ۱۵:۳۶