我刚刚开始wordpress插件开发。我想注册一个新的帖子类型时,插件被激活。但是当我激活插件时,什么都没有发生,Wordpress桌面上没有创建新菜单,apache的错误中没有错误。“日志”文件。
我想这可能是因为activate()方法是静态的,但我正在尝试遵循Wordpress。组织示例。
我有这个:
main-plugin-file.php
register_activation_hook( __FILE__, \'plugin_register_activation_hook\' );
function plugin_register_activation_hook(){
require_once plugin_dir_path( __FILE__ ) . \'includes/class-plugin-activator.php\';
CustomPluginActivator::activate();
}
includes/class-plugin-activator.php
class CustomPluginActivator {
public static function activate() {
add_action(\'init\', array( get_called_class(), \'register_custom_type\'));
}
function register_custom_type() {
register_post_type(\'custom_type\',
array(
\'labels\' => array(
\'name\' => __(\'Names\', \'textdomain\'),
\'singular_name\' => __(\'Name\', \'textdomain\'),
),
\'description\' => \'Descripción\',
\'public\' => true,
\'menu_position\' => 2,
\'has_archive\' => false,
\'rewrite\' => array( \'slug\' => \'custom-slug\' )
)
);
}
}
对不起,我的英语。谢谢
最合适的回答,由SO网友:Cyclonecode 整理而成
由于激活插件时只会调用激活挂钩,因此您需要调用register_post_type() 在每次访问管理页面时都会触发的某个挂钩上。您可以使用init 此挂钩:
add_action(\'init\', array($this, \'register_custom_type\'));
您还需要
register_custom_type() 此操作的公共方法:
public function register_custom_type()
{
// call register_post_type()
}
Documentation
注意:在“init”操作之前,不应挂接Post类型注册。此外,应通过$taxonomies参数注册任何分类连接,以确保使用诸如“parse\\u query”或“pre\\u get\\u posts”之类的挂钩时的一致性。