問題描述
用例:
我有一個與音樂表演有關的職位類型。 ‘show time’ 通過後期發佈日期被抓住,該日期設置在將來的一段時間。我發現了一個功能,可以使用未來的日誌博客帖子並留下日期,但標記的帖子是保存時發佈的,但無法確定如何為自定義帖子類型進行自定義。
功能如下。
<?php
function setup_future_hook() {
// Replace native future_post function with replacement
remove_action('future_post','show', '_future_post_hook');
add_action('future_post', 'show', 'publish_future_post_now');
}
function publish_future_post_now($id) {
// Set new post's post_status to "publish" rather than "future."
wp_publish_post($id);
}
add_action('init', 'setup_future_hook');
?>
最佳解決方案
令人驚訝的是,結合了 Mike 和 Jan 的答案,我想出了這個只適用於所討論的帖子類型的內容。我們不需要顯示的條件,因為’future_show’ 鈎只抓住顯示的類型和更新。
<?php
function setup_future_hook() {
// Replace native future_post function with replacement
remove_action('future_show','_future_post_hook');
add_action('future_show','publish_future_post_now');
}
function publish_future_post_now($id) {
wp_publish_post($id);
}
add_action('init', 'setup_future_hook');
?>
次佳解決方案
我無法確定,因為我沒有您的網站進行測試,但我相信您只需要從 remove_action()和 add_action()調用中刪除'show'。 wp_publish_post()函數對於 post 類型是不可知的,至少這是從閲讀代碼看來的。所以試試這個:
<?php
function setup_future_hook() {
// Replace native future_post function with replacement
remove_action('future_post', '_future_post_hook');
add_action('future_post', 'publish_future_post_now');
}
function publish_future_post_now($id) {
// Set new post's post_status to "publish" rather than "future."
wp_publish_post($id);
}
add_action('init', 'setup_future_hook');
?>
當然,如果你想限制只做表演,你可能想做這樣的事情 (雖然邏輯會更復雜,如果你需要它與其他職位類型):
function publish_future_post_now($id) {
$post = get_post($id);
if ('show' == $post->post_type)
wp_publish_post($id);
}
希望這可以幫助?
第三種解決方案
我認為這個動作被 wp_transition_post_status 調用。代碼是:
function wp_transition_post_status($new_status, $old_status, $post) {
do_action('transition_post_status', $new_status, $old_status, $post);
do_action("${old_status}_to_$new_status", $post);
do_action("${new_status}_$post->post_type", $post->ID, $post);
}
所以對於正常的未來帖子,最後一個鈎子將是 future_post,但是對於你的類型,它將是 future_show 或者你的類型插件。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。