我想簡化WordPress中「自定義帖子類型」的創建過程,因爲通過相同的腳本並手動更改所有自定義帖子類型名稱實例非常繁瑣。php中的動態函數名稱
創建一個包含CPT名稱的變量並在需要的地方使用它非常簡單。這樣,我所要做的就是在腳本的開始部分聲明變量,並且應該處理其餘部分。
唯一的問題是,爲了使它工作,我還需要在腳本內的每個函數的前面加上CPT名稱的前綴,並且似乎在函數名中使用變量並不容易,甚至不推薦在PHP中使用。
那麼我怎麼能解決這個問題呢?
這裏是下面一個例子來弄清楚:
$prefix = 'news';
function news_custom_type_init()
{
global $prefix;
register_post_type($prefix, array(
'labels' => array(
'name' => $prefix,
'singular_label' => $prefix,
'add_new' => 'Add',
...
));
register_taxonomy_for_object_type('category', $prefix);
}
add_action('init', $prefix.'_custom_type_init');
這幾乎是很好,如果我能動態地以重命名功能不都寫在單詞「新聞」可標準化它的前面,但使用「$前綴」來代替。
這本來是好的,但只是不工作:
$prefix = 'news';
$functionName= $prefix."_custom_type_init";
function $functionName()
{
global $prefix;
register_post_type($prefix, array(
'labels' => array(
'name' => $prefix,
'singular_label' => $prefix,
'add_new' => 'Add',
...
));
register_taxonomy_for_object_type('category', $prefix);
}
add_action('init', $prefix.'_custom_type_init');
有命名手動功能還挺打敗我的企圖(尤其是當該腳本嵌入幾十種功能,如這一個)的初衷。
這樣做的最好方法是什麼?
PS:我google和「stackoverflowed」了很多關於此,但沒有找到任何適合我的需求,並不會產生一個WordPress錯誤消息的工作解決方案。
謝謝。
我不知道我說清楚了(也許我沒有理解你的觀點)。你的腳本檢查功能是否已經存在,爲此,該功能應該首先手動創建,對嗎?我不是想動態調用一個現有的函數,我想要做的就是動態地「創建」該函數。爲了簡單起見,在上面的腳本中,我只想從第一條指令的任何地方刪除「新聞」一詞,並讓腳本起作用。如果我沒有得到你,我很抱歉。 – Baylock 2013-02-21 14:46:30
如果我理解正確,你想有一些功能,如「news_something」和「blog_something」等,然後動態調用所需的。我提供的代碼應該在init()中調用並選擇要調用的函數。 如果你想要的是從幾個位置調用相同的函數,我相信你需要創建函數並使它們調用相同的函數,因爲它們需要在PHP中註冊。 – hexblot 2013-02-21 14:50:49
感謝您的幫助hexbot。我編輯了上面的消息,以便通過一個非工作示例更好地理解我的目的。 – Baylock 2013-02-21 14:54:44