2016-08-24 116 views
1

發佈帖子時,我希望發佈日期與元數據imic_sermon_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');****