نحوه دریافت آیدی پست از طریق Meta Value در وردپرس

نحوه دریافت آیدی پست از طریق Meta Value در وردپرس

یکی از زیبا ترین و انعطاف پذیرترین جنبه های API وردپرس ، توانایی ارتباط Meta Data ها با مدل های خاص – به دلیل عدم وجود اصطلاح بهتر – در پایگاه داده است.همراه ما باشید با نحوه دریافت آیدی پست از طریق Meta Value در وردپرس

یعنی می توانیم Meta Value را به کاربران ، پست ها ، نویسندگان و غیره اختصاص دهیم.

بازیابی اطلاعات معمولاً آسان است. به سادگی آیدی پست مورد نظر را وارد کنید و سپس key value مربوط به meta post گفته شده را ارسال کنید.

اما اگر به جای آن نیاز به دریافت آیدی پست یا ارسال meta key توسط meta value دارید ، چه؟

دریافت آیدی پست از طریق meta value

هرگاه مجبور شدید که آن ایدی پست یا meta key را با value تعیین کنید ، به نظر می رسد که کاری را برعکس انجام می دهید. من فکر می کنم می توان برای استفاده نادرست از API و/یا سازماندهی نکردن صحیح داده های شما موردی قرار داد.

با این وجود ، پروژه هایی وجود داشته است که در آن من نیاز به بازیابی آیدی پست یا meta key پست داشتم ، در حالی که تمام value آن بود.

یک مثال واقعی

اما قبل از بررسی نحوه انجام این کار ، باید نوعی داده نمونه وجود داشته باشد:

برای مثال ، فرض کنید من صفحه ای دارم که دارای meta value مربوط به یک پست با ارزش “این صفحه قفل شده است” میباشد.

از آنجا که پایگاه داده بزرگ است ، نه آیدی صفحه را می دانم و نه meta key را که مربوط به قطعه مجموعه meta data است می شناسم.

بنابراین این چیزی است که من دارم:

  • این یک نوع پست صفحه است
  • مقدار متا “این صفحه قفل شده است” است.
  • برای دستیابی به اطلاعات واقعی دو راه وجود دارد.

استفاده از WP_Query و حلقه

اولین راهی که می توانید آیدی پست را از طریق meta value آن بازیابی کنید ، استفاده از WP_Query است. تنها اطلاعاتی که واقعاً باید بدانید meta value است که شما به دنبال آن هستید ، اگرچه همچنین دانستن نوع پست نیز کمک می کند.

برای انجام این کار ، می توانید عبارت زیر را تنظیم کنید:

$args = array(
  'post_type'   => 'page',
  'meta_query'  => array(
    array(
      'value' => 'this is my example value.'
    )
  )
);
$my_query = new WP_Query( $args );

از اینجا می توانید تنوع استاندارد The Loop را تنظیم کنید:

if( $my_query->have_posts() ) {
  while( $my_query->have_posts() ) {
    $my_query->the_post();
    // Do your work...
  } // end while
} // end if
wp_reset_postdata();

اما اگر انتظار یک پست واحد را دارید ، دیگر نیازی به تنظیم حلقه while ندارید.

در نهایت توجه داشته باشید که هرچه اطلاعات بیشتری در مورد پست داشته باشید ، بهتر است. به این معنا که دانستن نوع پست خوب است ، اما دانستن اطلاعات بیشتر درباره پست می تواند به ارائه یک پرس و جو بهینه تر کمک کند.

استفاده از sql دیتابیس

از سوی دیگر ، مواقعی وجود دارد که امکان استفاده از SQL خام برای بازیابی نتایج وجود دارد. برای انجام این کار ، به دو قطعه اطلاعات نیاز دارید:

  • نام جدولی که meta data در آن نگهداری می شوند. در مورد ما ، این جدول wp_postmeta است
  • meta value پست


از اینجا می توانید از $wpdb و SQL خام برای بازیابی نتایج استفاده کنید:

global $wpdb;
$results = $wpdb->get_results( "select post_id, meta_key from $wpdb->postmeta where meta_value = 'this is my example value.'", ARRAY_A );

با این اوصاف ، من واقعا این کار را توصیه نمی کنم مگر اینکه در SQL فوق العاده مهارت داشته باشید و درک عمیقی از عملکرد پرس و جو ، نمایه های طرح پایگاه داده و غیره داشته باشید.

کدام بهتر است؟

وقتی نوبت به نوشتن چنین کدی می رسد ، من معمولاً به دو دلیل از API وردپرس – یعنی WP_Query – استفاده می کنم:

این کد تمیزتر و خواندنی تر را در چارچوب پایگاه کد وردپرس ارائه می دهد
در نهایت به SQL بهینه کاهش می یابد که بهتر از چیزی است که من می توانستم به تنهایی به آن دست پیدا کنم
دو مثال بالا ساده اند. اغلب اوقات نیازی نیست که یک پرس و جو را اجرا کنید تا یک یا دو نتیجه را با مقادیر متا به عقب برگردانید ، و همچنین این امر معمول نیست که به یک عبارت ساده SELECT نیاز داشته باشید.

در عوض ، به احتمال زیاد به اطلاعات بیشتری برای ارائه JOINS ، LIMITS و غیره نیاز دارید تا مطمئن شوید که دقیقاً آنچه را که نیاز دارید عقب می کشید.

بنابراین ، با همه این موارد ، من توصیه می کنم از WP_Query استفاده کنید – این همان چیزی است که برای آن وجود دارد – اما اگر با مجموعه پیچیده ای از داده ها سروکار دارید و با طرح پایگاه داده وردپرس و SQL آشنایی کامل دارید ، آن را داشته باشید.

منابع
_ TOM MCFARLIN
یوسف حسینی _ متخصص وردپرس
هر بار پروژه ای که در حال انجامش هستم به خطا یا باگ منتهی میشه, خوشحال میشم. چون قراره با رفع اون خطا یک چیز جدید یاد بگیرم. این مشکلات هستند که به ما آموزش میدن پس از مشکلات خود نترسیم.

دیدگاهتان را بنویسید