問題描述
用例:
我有一個與音樂表演有關的職位型別。 ‘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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。