بروزرسانی پست در وردپرس - 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 آن استفاده کنید همانطور که در کد های بالا مشهود می باشد.

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

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

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

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


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

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

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

ناصر خالدی

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

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

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

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

اندروید

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


۱۰۵۴
۰
۲۹ آبان ۱۳۹۹

هک و امنیت

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


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

پی اچ پی - PHP

با استفاده از این زبان می توان وب سایت های پویا طراحی کرد, این زبان می تواند با HTML ادغام شود, در حقیقت یک زبان اسکریپتی متن باز و رایگان است. یعنی زمانی که سرور درخواست ...


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

جاوا اسکریپت

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


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

Fatal error: Uncaught wfWAFStorageFileException: Unable to verify temporary file contents for atomic writing. in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:52 Stack trace: #0 /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(659): wfWAFStorageFile::atomicFilePutContents('/home/clonerco/...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 52