如何仅在编辑或添加帖子时为管理员加载脚本和CSS

时间:2011-07-07 作者:ChiCgi

我有一个插件,允许管理员在添加或编辑帖子时执行某些操作。我为这个插件使用了样式表和javascript,在添加或编辑帖子时,我只想包含这些插件。我使用以下动作挂钩对吗?

add_action(\'load-post.php\', \'call_my_function\');
add_action(\'load-post-new.php\', \'call_my_function\');
在函数call\\u my\\u函数中,我有:

function call_my_function() {
  $plugin_directory = "/wp-content/plugins/".dirname(plugin_basename(__FILE__));
  $jssrc = $plugin_directory.\'/js/my_plugin.js\';
  wp_enqueue_script("my_plugin_js", $jssrc);
  $csssrc = $plugin_directory.\'/css/my_plugin.css\';
  wp_enqueue_style("my_plugin_css", $csssrc);
}
上述代码在未从add\\u操作挂钩调用时成功加载CSS和Javascript文件。当从这些挂钩调用时,它不会成功工作。

3 个回复
SO网友:Milo

你想用admin_print_scripts-(page_hook)admin_print_styles-(page_hook), 因此,在您的情况下:

add_action(\'admin_print_scripts-post.php\', \'call_my_function\');
add_action(\'admin_print_scripts-post-new.php\', \'call_my_function\');

add_action(\'admin_print_styles-post.php\', \'call_my_styles_function\');
add_action(\'admin_print_styles-post-new.php\', \'call_my_styles_function\');

SO网友:t31os

当从这些挂钩调用时,它不会成功工作。

我建议您检查页面的源代码,这些挂钩对于排队来说效果很好。我复制了您的代码以进行检查,并且在使用挂钩时,我看到样式表和脚本都已排队。。

不过,您加载排队的方式看起来是错误的,我建议您:。。

function call_my_function() {
    wp_enqueue_script("my_plugin_js", plugins_url( \'/js/my_plugin.js\', __FILE__ ) );
    wp_enqueue_style("my_plugin_css", plugins_url( \'/css/my_plugin.css\', __FILE__ ) );
}

SO网友:Jonathan Joosten

这个对我来说很有用,包括customsubmenu页面上的脚本:

add_action(\'admin_menu\', \'register_my_custom_submenu_pages\');

function register_my_custom_submenu_pages() {

    $email_menu = add_submenu_page( \'edit.php?post_type=events\', \'Email Users\', \'Email Users\', \'edit_others_posts\', \'email\', \'email_callback\' ); 

    add_action( \'admin_print_styles-\' . $email_menu, \'email_custom_css\' );
    add_action( \'admin_print_scripts-\' . $email_menu, \'email_custom_js\' );  

}

function email_callback() {

    echo \'<div class="wrap">\';
        echo \'<h2>\'.get_admin_page_title().\'</h2>\';
        include get_stylesheet_directory() . \'/admin/email.php\';
    echo \'</div>\';

}

function email_custom_css()
{ 
    wp_enqueue_style( \'chosen\',get_stylesheet_directory_uri().\'/js/chosen/chosen.min.css\' ); 
}; 

function email_custom_js()
{ 
    wp_enqueue_script( \'chosen\', get_stylesheet_directory_uri().\'/js/chosen/chosen.jquery.min.js\', array(\'jquery\')); 
};
速记这可以翻译为:

add_action( \'admin_print_styles-post.php\', \'custom_css_load\' );
add_action( \'admin_print_styles-post-new.php\', \'custom_css_load\' );

add_action( \'admin_print_scripts-post.php\', \'custom_js_load\' ); 
add_action( \'admin_print_scripts-post-new.php\', \'custom_js_load\' ); 

function custom_css_load()
{ 
    wp_enqueue_style( \'my_styles\', plugins_url( \'/css/my_plugin.css\', __FILE__ ) ); 
}; 

function custom_js_load()
{ 
    wp_enqueue_script( \'my_scripts\', plugins_url( \'/js/my_plugin.js\', __FILE__ ), array(\'jquery\')); 
};
如果js代码依赖于jQuery,不要忘记在jQuery之后加载。

我不能测试这个,所以请随意处理:)

结束

相关推荐

Blog Posts not showing title

我将阅读设置设置为静态页面,博客设置为一个名为“新内容”的页面。当我转到“最新信息”页面时,我可以看到帖子内容,但没有显示带有帖子页面链接的帖子标题。我只能看到帖子的内容。我已经尽了我所能找到错误,运气不好,请帮忙!索引代码。php:<div id=\"content\" class=\"narrowcolumn\" role=\"main\"> <?php if (have_posts()) : ?> <?php while (hav