2016-08-24 14 views
1

投稿が公開されている場合は、公開日をメタデータimic_sermon_dateの日付と同じにします。投稿の公開日がmeta dateの公開日から変更する

ここに私のコードです。問題は、投稿を公開するときに問題になることです。

function update_sermon_date ($post_id) { 
    //automatically change publish date to sermon date when publish/save a postfunction update_sermon_date ($post_id) { 
    $sermon_date = get_post_meta($post_id, 'imic_sermon_date', true); 
    $mypost = array (
     'ID' => $post_id, 
     'post_date' => $sermon_date); 
    wp_update_post($mypost); 
    } 

    add_action ('save_post', 'update_sermon_date'); 

誰かがこれを手伝ってくれますか?

ありがとうございました。

+0

更新は、コールバック関数update_sermon_dateの中にある必要があります。 –

+0

@VidyaL - ありがとうございます。私はそのコード行を貼り付けるのを忘れていました。 – BigRedDog

+0

あなたは投稿を公開するときに立ち往生していると言ったので、投稿は新しいものなので、新しいIDで投稿メタをどのように取得しますか? –

答えて

0

オンラインで検索した後、自分のコードを修正しました。

コードは、基本的に、投稿の編集時にのみ更新されます。私は、コードが無限ループを実行するのを防ぐために、remove_actionとadd_actionを追加しました。

****//automatically change publish date to sermon date when publish/save a post 
function update_sermon_date() { 
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
     return; 


    if (!current_user_can('edit_post', $post_id)) 
     return; 

    $sermon_date = get_post_meta(get_the_ID(), 'imic_sermon_date', true); 
    $mypost = array (
     'ID' => get_the_ID(), 
     'post_title' => $sermon_date, 
     'post_date' => $sermon_date, 
     'post_date_gmt' => $sermon_date); 

    if (! (wp_is_post_revision($post_id) || wp_is_post_autosave ($post_id))) { 
     remove_action('edit_post','update_sermon_date'); 
     wp_update_post($mypost); 
    add_action ('edit_post', 'update_sermon_date'); 
    } 
} 

add_action ('edit_post', 'update_sermon_date');****