发布内容和元更新后的WordPress挂钩

时间:2019-12-27 作者:wplearner

我想更新我的一个元字段并重定向,我正在使用post_updated钩这是我的密码。

function job_publish_status( $post_ID, $post_after, $post_before ) {
   $job_published_date = get_the_time("Y-m-d", $post_ID);
   $expire_date = date(\'Y-m-d\', strtotime($job_published_date. \' + 60 days\'));
   update_post_meta($post_ID, \'_job_expires\', $expire_date);
   $url = get_site_url();
   $url = $url.\'/wp-admin/post.php?post=\'.$post_ID.\'&action=edit\';
   wp_redirect( $url );
   exit; 
}
add_action(\'post_updated\', \'job_publish_status\', 99, 3 );
它正在更新此_job_expires 元字段并正确重定向。当我编辑文章内容和标题时,它会更新标题和内容,但不会更新该文章中的其他元字段。发布内容更新和元字段更新后是否会触发任何挂钩?

1 个回复
最合适的回答,由SO网友:Mayeenul Islam 整理而成

save_postnew_to_publish 通过一些检查,就足以更新post元数据。您不需要重定向。

<?php
/**
 * Update Postmeta.
 *
 * @param integer $post_id Post ID.
 */
function wpse355298_job_publish_status( $post_id ) {
    // Check autosave.
    if ( wp_is_post_autosave( $post_id ) ) {
        return $post_id;
    }

    // Check post revision.
    if ( wp_is_post_revision( $post_id ) ) {
        return $post_id;
    }

    // Check permissions.
    if ( \'post\' === $_POST[\'post_type\'] ) {
        if ( ! current_user_can( \'edit_post\', $post_id ) ) {
            return $post_id;
        }
    }

    $job_published_date = get_the_time( \'Y-m-d\', $post_id );
    $expire_date        = date( \'Y-m-d\', strtotime( $job_published_date. \' + 60 days\' ) );

    update_post_meta( $post_id, \'_job_expires\', $expire_date );
}

add_action( \'save_post\', \'wpse355298_job_publish_status\' );
add_action( \'new_to_publish\', \'wpse355298_job_publish_status\' );