تابع wp_insert_post در وردپرس
تابع 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_author | ID نویسنده پست |
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() یکی از ابزارهای قدرتمند برای مدیریت محتوای وردپرس بهصورت برنامهنویسی است. با این تابع میتوانید پستها، برگهها و محتوای سفارشی را ایجاد، بهروزرسانی یا حتی با دادههای متادیتا ترکیب کنید. استفاده صحیح از این تابع، در ساخت افزونهها، قالبها و پروژههای اتوماسیون محتوا بسیار ضروری است.
آیا این مطلب برای شما مفید بود ؟




