将CSS添加到自定义帖子类型管理页面导致错误

时间:2010-10-21 作者:JLeuze

我的Meteor Slides 在幻灯片自定义帖子类型的管理页面上加载样式表的插件:

    add_action(\'admin_head\', \'meteorslides_admin_css\');

function meteorslides_admin_css() {

    global $post_type;

    if (($_GET[\'post_type\'] == \'slide\') || ($post_type == \'slide\')) :

        echo "<link type=\'text/css\' rel=\'stylesheet\' href=\'" . plugins_url(\'/css/meteor-slides-admin.css\', __FILE__) . "\' />";

    endif;

}
此代码工作正常,没有引起任何问题,但在调试模式下,它确实会导致我要解决的错误:

// Notice: Undefined index: post_type in C:\\Program Files\\xampp\\htdocs\\slides\\wp-content\\plugins\\meteor-slides-1.3\\meteor-slides-plugin.php on line 476
我还没有修复这个错误,有没有人有什么建议,或者有没有其他方法可以将样式表添加到某个帖子类型的管理页面?

2 个回复
最合适的回答,由SO网友:John P Bloch 整理而成

您需要检查是否存在\'post_type\' 作为索引$_GET 使用前:

if ((isset($_GET[\'post_type\']) && $_GET[\'post_type\'] == \'slide\') || (isset($post_type) && $post_type == \'slide\')) :
此外,您应该使用wp_enqueue_style 函数,而不是在\'admin_head\':

wp_enqueue_style( \'meteor-slides-admin\', plugins_url(\'/css/meteor-slides-admin.css\', __FILE__), array(), \'1.0\' );
More information on wp_enqueue_style here.

SO网友:t31os

有用于向特定页面添加操作的挂钩。。此外,还有各种变量,用于保存有关当前页面、帖子类型、父文件等的数据。。

admin_print_styles 将是用于排队样式的正确挂钩,而对于编辑页面,您的操作可能看起来有点像这样。。

add_action( \'admin_print_styles-edit.php\', \'example_function\' ); // Will work for any post type, check inside the callback function
//add_action( \'admin_print_styles-post-new.php\', \'example_function\' ); // Example
//add_action( \'admin_print_styles-edit-tags.php\', \'example_function\' ); // Example
function example_function() {
    global $typenow;
    if( \'my_custom_type\' == $typenow )
        wp_enqueue_style( \'meteor-slides-admin\', plugins_url(\'/css/meteor-slides-admin.css\'), array(), \'1.0\' );
}
在这种情况下,挂钩是edit.php, 每个管理页面都有一个类似的挂钩。WordPressadmin_header.php 基本上有一组动作可以触发,看起来是这样的。。

do_action(\'admin_enqueue_scripts\', $hook_suffix);
do_action("admin_print_styles-$hook_suffix");
do_action(\'admin_print_styles\');
do_action("admin_print_scripts-$hook_suffix");
do_action(\'admin_print_scripts\');
do_action("admin_head-$hook_suffix");
do_action(\'admin_head\');
以及admin.php 使用以下内容设置挂钩后缀。。

$hook_suffix = \'\';
if ( isset($page_hook) )
    $hook_suffix = $page_hook;
else if ( isset($plugin_page) )
    $hook_suffix = $plugin_page;
else if ( isset($pagenow) )
    $hook_suffix = $pagenow;
抛开所有核心代码不谈,我进一步发布的示例函数是一个可以用于定位编辑帖子(自定义类型或非自定义类型)屏幕的工作示例。。。。

希望这有帮助。。

结束

相关推荐

在自定义主题选项的管理屏幕上包括CSS和JS

我正在创建一个带有主题选项页的自定义主题。我想设置选项页的样式,但不想包含内联样式。有没有办法从say中包含外部样式表TEMPLATEPATH . \'/css/admin.css\' 我还发现了这段代码,它似乎很有效-linkfunction admin_register_head() { $siteurl = get_option(\'siteurl\'); $url = $siteurl . \'/wp-content/plugins/\' . basename(dir