我想简化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