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

نویسنده : ناصر خالدی بروز شده در : 5 ماه 12 روز قبل آخرین مطالعه 4 روز 10 ساعت قبل دسته ها : وردپرس

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

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


قیمت (تومان)
رایگان
وضعیت
تکمیل شده

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

بک لینک چیست؟

بک لینک چیست؟

بک لینک (Back Link) به لینک دادن یک سایت به سایت دیگر گفته میشود که یک فاکتور مهم و اساسی در سئو هر سایتی می باشد.

آخرین بروزرسانی 10 ماه 3 روز قبل

هک و امنیت

هک و امنیت

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

آخرین بروزرسانی 10 ماه 12 روز قبل

نود جی اس

نود جی اس

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

آخرین بروزرسانی 10 ماه 13 روز قبل

وردپرس

وردپرس

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

آخرین بروزرسانی 10 ماه 12 روز قبل

سوالات و گفتگوها

logo-samandehi
تماس با ما

می توانید از طریق اطلاعات زیر با ما در ارتباط باشید.

درباره ما

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