web-dev-qa-db-ja.com

投稿ステータスの移行中/公開中に投稿メタデータをランダムな値に設定する

未公開のドラフトを公開する際には、カスタムメタ値 "post views count"を8291013の間のランダム変数に設定してください。

私は以下のコードを使っていますが、それはいつもうまくいくとは限りません。私がテストドラフトを作成してすぐにそれを公開するが、数日間投稿を保存したときでないとき、それは動作します。他の作家に割り当ててもうまくいきません。

注:新しいカスタムフィールドを作成したくありません。 post_views_countという既存のフィールドを更新したいだけです。

function wpse_custom_field_on_publish( $new, $old, $post ) {
  if ( $new == 'publish' && $old != 'publish' && !get_post_meta( $post->ID, 'post_views_count', true ) ) {
    update_post_meta( $post->ID, 'post_views_count', Rand(829, 1013), true );
  }
}
add_action( 'transition_post_status', 'wpse_custom_field_on_publish', 10, 3 );
1
location

コードを少し変更してください。

function wpse_custom_field_on_publish( $new, $old, $post ) {
    // Only run on "from X > to publish"-transitions
    if ( $new === 'publish' && $old !== 'publish') { 
        $page_views = get_post_meta( $post->ID, 'post_views_count', true );
        // Only set 'post_views_count' post meta value if there is none so far
        if ( empty( $page_views ) )
             update_post_meta( $post->ID, 'post_views_count', Rand( 829, 1013 ) ); 
    }
} 
add_action( 'transition_post_status', 'wpse_custom_field_on_publish', 10, 3 );
2
WisdmLabs