ویژگی تصویر

تابع wp_insert_post در وردپرس

  /  وردپرس   /  تابع wp_insert_post در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

تابع wp_insert_post() یکی از توابع کلیدی و پرکاربرد در وردپرس است که برای ایجاد یا به‌روزرسانی نوشته‌ها (Posts)، برگه‌ها (Pages) یا هر نوع محتوای سفارشی (Custom Post Type) از طریق کدنویسی در قالب یا افزونه استفاده می‌شود. این تابع به توسعه‌دهندگان اجازه می‌دهد تا بدون ورود به بخش مدیریت وردپرس، محتوای جدید را مستقیماً در دیتابیس درج کنند.

ساختار کلی تابع wp_insert_post()

wp_insert_post( array $postarr, bool $wp_error = false, bool $fire_after_hooks = true );

آرگومان $postarr شامل اطلاعات نوشته است، مانند عنوان، محتوا، وضعیت انتشار و نویسنده. دو پارامتر دیگر برای کنترل خطا و فعال‌سازی هوک‌ها استفاده می‌شوند.

مهم‌ترین پارامترهای آرایه $postarr

پارامترتوضیح
post_titleعنوان نوشته یا پست
post_contentمحتوای اصلی پست
post_statusوضعیت پست (مثلاً publish، draft یا pending)
post_authorID نویسنده پست
post_typeنوع پست (مثلاً post، page یا نوع سفارشی)
post_categoryآرایه‌ای از شناسه دسته‌بندی‌ها (برای پست‌های معمولی)
meta_inputآرایه‌ای شامل متادیتاهای دلخواه (مثل کلیدهای سفارشی)

مثال ساده از استفاده تابع wp_insert_post()


$post_data = array(
  'post_title'    => 'اولین نوشته من با کد',
  'post_content'  => 'این متن به صورت خودکار با تابع wp_insert_post() ایجاد شده است.',
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_type'     => 'post'
);

$post_id = wp_insert_post( $post_data );

if ( $post_id ) {
    echo "نوشته با موفقیت ایجاد شد و ID آن: " . $post_id;
} else {
    echo "خطا در ایجاد نوشته";
}

در این مثال، یک نوشته جدید با عنوان مشخص و وضعیت publish در سایت درج می‌شود. مقدار بازگشتی تابع، ID نوشته تازه ایجادشده است.

افزودن متادیتا (Meta Fields) با wp_insert_post()


$post_data = array(
  'post_title'    => 'پست با متادیتا',
  'post_content'  => 'این پست دارای داده‌های سفارشی است.',
  'post_status'   => 'publish',
  'post_author'   => 1,
  'meta_input'    => array(
    'views' => 0,
    'featured' => true
  )
);

$post_id = wp_insert_post( $post_data );

در این حالت، وردپرس هنگام ایجاد پست، کلیدهای متادیتای views و featured را نیز در جدول wp_postmeta ذخیره می‌کند.

ایجاد پست سفارشی (Custom Post Type)

می‌توانید با تعیین مقدار post_type برابر با نوع سفارشی، پست‌های خاصی ایجاد کنید. مثلاً اگر نوع portfolio را از قبل ثبت کرده باشید:


$post_data = array(
  'post_title'   => 'نمونه کار طراحی سایت',
  'post_content' => 'توضیحات مربوط به پروژه طراحی سایت.',
  'post_status'  => 'publish',
  'post_type'    => 'portfolio'
);

$post_id = wp_insert_post( $post_data );

این کد یک نمونه‌کار جدید در نوع پست portfolio ایجاد می‌کند.

به‌روزرسانی پست با wp_insert_post()

تابع wp_insert_post() علاوه بر درج، می‌تواند برای ویرایش پست نیز استفاده شود. کافیست شناسه پست موجود را در آرایه ارسال کنید:


$post_update = array(
  'ID'           => 45,
  'post_title'   => 'عنوان جدید نوشته',
  'post_content' => 'محتوای به‌روزشده نوشته.',
);

wp_insert_post( $post_update );

در این حالت، وردپرس پست با ID = 45 را ویرایش کرده و تغییرات را ذخیره می‌کند.

کنترل خطا با پارامتر wp_error

اگر پارامتر دوم تابع را true تنظیم کنید، در صورت بروز خطا، به جای مقدار 0 یا ID پست، یک شیء WP_Error بازمی‌گردد:


$post_id = wp_insert_post( $post_data, true );

if ( is_wp_error( $post_id ) ) {
  echo 'خطا: ' . $post_id->get_error_message();
}

این روش برای عیب‌یابی و کنترل دقیق‌تر خطاها در افزونه‌ها و قالب‌ها بسیار مفید است.

نکات و بهترین روش‌ها (Best Practices)

  • همیشه قبل از درج داده، ورودی‌ها را با sanitize_text_field() یا توابع مشابه پاک‌سازی کنید.
  • از هوک save_post برای انجام عملیات بعد از درج یا ویرایش استفاده کنید.
  • در هنگام استفاده در حلقه‌ها یا import داده‌ها، عملکرد تابع را با wp_suspend_cache_invalidation() بهینه کنید.
  • برای درج تصاویر شاخص، پس از ایجاد پست از تابع set_post_thumbnail() استفاده کنید.

افزودن تصویر شاخص بعد از ایجاد پست


$post_id = wp_insert_post( $post_data );

if ( $post_id ) {
  $image_id = media_handle_upload( 'featured_image', $post_id );
  if ( ! is_wp_error( $image_id ) ) {
    set_post_thumbnail( $post_id, $image_id );
  }
}

در این مثال، پس از آپلود موفق تصویر، آن به‌عنوان تصویر شاخص پست تنظیم می‌شود.

مقایسه wp_insert_post() با سایر توابع درج داده

تابعکاربردویژگی‌ها
wp_insert_post()ایجاد یا ویرایش پست‌ها و برگه‌هاپشتیبانی از تمام نوع پست‌ها، هوک‌ها و متادیتا
wp_update_post()ویرایش پست موجودساده‌تر برای به‌روزرسانی داده‌های جزئی
wp_delete_post()حذف پست از پایگاه دادهدارای گزینه حذف دائمی یا انتقال به زباله‌دان

جمع‌بندی

تابع wp_insert_post() یکی از ابزارهای قدرتمند برای مدیریت محتوای وردپرس به‌صورت برنامه‌نویسی است. با این تابع می‌توانید پست‌ها، برگه‌ها و محتوای سفارشی را ایجاد، به‌روزرسانی یا حتی با داده‌های متادیتا ترکیب کنید. استفاده صحیح از این تابع، در ساخت افزونه‌ها، قالب‌ها و پروژه‌های اتوماسیون محتوا بسیار ضروری است.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: