我试图实现的是加载一个。编辑js文件。php页面,但是代码不是专门针对该页面的。我已经将相同代码类型的代码应用于其他CPT页面,但由于某些原因,此CPT页面没有注册脚本。
以下是我使用的代码:
add_action( \'admin_menu\', \'contacts_table_add_pages\', 99 );
function contacts_table_add_pages(){
$menu = add_menu_page( \'Contacts\', \'Contacts\', \'publish_posts\', \'edit.php?post_type=contact\' );
$submenu = add_submenu_page(\'contacts\', \'Add Contact\', \'Add Contact\', \'publish_posts\', \'post-new.php?post_type=contact\');
add_action( \'load-\' . $menu, \'contacts_table_add_custom_css_js\', 11 );
}
function contacts_table_add_custom_css_js() {
add_action( \'admin_enqueue_scripts\', \'contacts_table_css_js\', 11 );
}
function contacts_table_css_js() {
wp_enqueue_script( \'contacts\', PLUGIN_URL . \'contacts/includes/contacts.js\' );
}
我之所以要创建一个新的CPT菜单项,是因为它曾经是另一个插件子菜单列表的一部分,所以我将它从那里删除,并创建了自己的菜单项。
我对另一个插件的CPT也做了同样的操作,这个插件运行得很好。这只是来自另一个插件的CPT不起作用。
有什么线索吗?
谢谢Roc。
最合适的回答,由SO网友:chrisguitarguy 整理而成
我认为你使用了错误的方法。与其删除子菜单项,不如更改post类型的注册方式,并更改show_in_menu
论点延迟钩住init并更改参数。
<?php
add_action(\'init\', \'wpse99123_post_type_switcher\', 999);
function wpse99123_post_type_switcher()
{
global $wp_post_types;
$wp_post_types[\'contact\']->show_in_menu = true; // put it back in the menu
}
然后,要加载CSS/JS/whatever,您需要连接到
load-edit.php
并检查当前屏幕的post类型,并从中添加排队功能。
<?php
add_action(\'load-edit.php\', \'wpse99123_load_edit\');
function wpse99123_load_edit()
{
$screen = get_current_screen();
if (!isset($screen->post_type) || \'contact\' !== $screen->post_type) {
return; // not where we want to be, bail
}
// add enqueues here.
add_action(\'admin_enqueue_scripts\', \'wpse99123_enqueue\');
}
function wpse99123_enqueue()
{
// ...
}
你必须这样做
load-edit.php
因为
$screen->post_type
将在您的联系人编辑中显示联系人(
post.php
) 并添加新的(
post-new.php
) 第页。