带插件的主要插件 - WP

时间:2015-12-11 11:23:39

标签: php wordpress wordpress-plugin

我是WordPress的新手,但我想创建一个插件,列出我正在创建的自定义插件的所有插件设置,所以我不必进入每个插件。

在主插件中我有这个:

if (!function_exists('get_plugins'))
    require_once (ABSPATH."wp-admin/includes/plugin.php");
    $all_plugins = get_plugins();
    foreach($all_plugins as $plugin_key => $plugin_data){   
        if (strpos(strtolower($plugin_data['Name']),'prefix') !== false) { 
            //skip this one as this is the main plugin and we do not need to display any thing
            if (strpos(strtolower($plugin_data['Name']),'plugins') === false) {
                 if (is_plugin_active($plugin_key)) {                       
                     require_once(ABSPATH . 'wp-content/plugins/'.$plugin_key);
                     $plugin_class_name =  preg_replace('/\s+/','', str_replace("'", "", ucwords($plugin_data['Name'])));

                     $class_handler = new $plugin_class_name();  
                     ?>
                     <div id="sec-<?php echo $plugin_key ?>" class="section">
                         <div class="section-header">
                             <h3><?php echo $plugin_data['Name']?></h3>
                         </div>
                         <div class="section-content">
                            <?php $class_handler->show_settings() ?>
                         </div>
                     </div>
                     <?php
                 }
            }
        }
    }

以上代码片段的作用是获取所有带有前缀的插件。这个工作正常,甚至是$class_handler->show_settings(),因为显示效果很好,但我遇到了排队样式和JS的问题..所以这是子插件中的代码:

function __construct(){
    if ( !function_exists( 'add_action' ) ) {
        echo "This page cannot be called directly.";
        exit;
    }   
    if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }

    if(is_admin()){
        //call be scripts
        add_action('wp_enqueue_scripts', array($this, 'add_be_script'));
    } else{
        //call frontend scripts
        add_action('wp_enqueue_scripts',  array($this, 'add_fe_script'));
    }
}
function add_be_script(){
    wp_enqueue_style( 'wp-color-picker' );   
} 

但颜色选择器未包含在样式中,因为未调用函数add_be_script()

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

wp_enqueue_scripts()只将css和js排在前面

要在后台添加css / js文件,请使用:

add_action('admin_head', 'add_be_script');

这将在后台办公室负责调用add_be_script()。

编辑,并且回答替代方案更好:

add_action('admin_enqueue_scripts', 'add_be_script');