بروزرسانی پست در وردپرس - wp_update_post

wp_update_post( array|object $postarr = array()bool $wp_error = falsebool $fire_after_hooks = true )

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


 

#توضیحات

هنگامی که شما یک پست با وضعیت پیش نویس (draft) دارید نیازی نیست تا برای آن تاریخ ست کنید, حتی اگر تاریخ هم ست کنید بر روی آن اعمال نمی شود.


 

#پارامتر ها

  • postarr

این پارامتر اختیاری می باشد و می تواند آرایه یا یک آبجکت قبول کند, در این پارامتر شما باید جزییاتی را که قصد ویرایش آن ها را دارید مشخص کنید, برای دیدن لیست جزییات درباره متد wp_insert_post مطالعه کنید.

  • wp_error

این پارامتر اختیاری می باشد و مقدار از نوع بولین (bool) دریافت میکند مقدار پیش فرض آن false می باشد. با true کردن این گزینه, زمانی که در هنگام بروزرسانی پست مشکلی به وجود بیاید یک آبجکت از نوع WP_Error برگشت داده میشود.

  • fire_after_hooks

این پارامتر نیز به صورت اختیاری و از نوع بولین (bool) می باشد و مقدار پیش فرض آن true است, با فعال کردن این گزینه می توانید بگوید که بعد از بروزرسانی هوک های (hooks) وارد کردن پست فراخوانی شود یا خیر.


 

#نتیجه بازگشتی

با فراخوانی کردن این متد و دادن مقادیر دلخواه در آن, بعد از انجام دستورات تعریف شده یک نتیجه برگشت داده میشود, نوع داده برگشتی از این متد می تواند عددی یا آبجکت WP_Error باشد, زمانی که پست به درستی بروزرسانی شود ID آن پست برگشت داده میشود و اگر در حین انجام دستورات به مشکلی برخورد کند عدد 0 یا آبجکت WP_Error را برگشت می دهد.


 

#منبع

آدرس فایل : wp-includes/post.php

 

function wp_update_post( $postarr = array(), $wp_error = false, $fire_after_hooks = true ) {
    if ( is_object( $postarr ) ) {
        // Non-escaped post was passed.
        $postarr = get_object_vars( $postarr );
        $postarr = wp_slash( $postarr );
    }
 
    // First, get all of the original fields.
    $post = get_post( $postarr['ID'], ARRAY_A );
 
    if ( is_null( $post ) ) {
        if ( $wp_error ) {
            return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );
        }
        return 0;
    }
 
    // Escape data pulled from DB.
    $post = wp_slash( $post );
 
    // Passed post category list overwrites existing category list if not empty.
    if ( isset( $postarr['post_category'] ) && is_array( $postarr['post_category'] )
        && count( $postarr['post_category'] ) > 0
    ) {
        $post_cats = $postarr['post_category'];
    } else {
        $post_cats = $post['post_category'];
    }
 
    // Drafts shouldn't be assigned a date unless explicitly done so by the user.
    if ( isset( $post['post_status'] )
        && in_array( $post['post_status'], array( 'draft', 'pending', 'auto-draft' ), true )
        && empty( $postarr['edit_date'] ) && ( '0000-00-00 00:00:00' === $post['post_date_gmt'] )
    ) {
        $clear_date = true;
    } else {
        $clear_date = false;
    }
 
    // Merge old and new fields with new fields overwriting old ones.
    $postarr                  = array_merge( $post, $postarr );
    $postarr['post_category'] = $post_cats;
    if ( $clear_date ) {
        $postarr['post_date']     = current_time( 'mysql' );
        $postarr['post_date_gmt'] = '';
    }
 
    if ( 'attachment' === $postarr['post_type'] ) {
        return wp_insert_attachment( $postarr, false, 0, $wp_error );
    }
 
    // Discard 'tags_input' parameter if it's the same as existing post tags.
    if ( isset( $postarr['tags_input'] ) && is_object_in_taxonomy( $postarr['post_type'], 'post_tag' ) ) {
        $tags      = get_the_terms( $postarr['ID'], 'post_tag' );
        $tag_names = array();
 
        if ( $tags && ! is_wp_error( $tags ) ) {
            $tag_names = wp_list_pluck( $tags, 'name' );
        }
 
        if ( $postarr['tags_input'] === $tag_names ) {
            unset( $postarr['tags_input'] );
        }
    }
 
    return wp_insert_post( $postarr, $wp_error, $fire_after_hooks );
}

 


 

#نمونه کد ها

$my_post = array(
      'ID'           => 37,
      'post_title'   => 'This is the post title.',
      'post_content' => 'This is the updated content.',
  );
 
  wp_update_post( $my_post );

 

برای هندل و بررسی خطا ها از نمونه کد زیر کمک بگیرید :

 

<?php
// Of course, this should be done in an development environment only and commented out or removed after deploying to your production site.
 
wp_update_post( $current_item, true );                        
if (is_wp_error($post_id)) {
    $errors = $post_id->get_error_messages();
    foreach ($errors as $error) {
        echo $error;
    }
}
?>

 

برای بروزرسانی پست ها باید حتما از ID آن استفاده کنید همانطور که در کد های بالا مشهود می باشد.

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

در این آموزش قصد بر این شده تا متد بروزرسانی پست ها در وردپرس مورد بررسی قرارداده شود.


قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دوره های پیشنهادی

مقالات پیشنهادی

نود جی اس

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


۸۶۵
۰
۱۲ آذر ۱۳۹۹

وردپرس

وردپرس یک سیستم مدیریت محتوای قوی می باشد که با استفاده از آن می توان وب سایت ها و وبلاگ های گوناگونی با هر شرایطی را طراحی کرد چرا که این سیستم و ...


۷۶۶
۰
۱۳ آذر ۱۳۹۹

جاوا اسکریپت

جاوا اسکریپت یک زبان پویا و محبوب مبتنی بر شیء, داینامیک و مفسری می باشد. این زبان برای برنامه نویسی سمت سرور و کلاینت استفاده میشود که ...


۸۲۴
۰
۱۳ آذر ۱۳۹۹

هوش مصنوعی

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


۷۷۸
۰
۱۱ آذر ۱۳۹۹