包括其他插件中任何插件或使用其他插件中的其他插件

时间:2013-08-29 作者:anytime

我想做一些类似的事情:想在其他插件的页面上显示一个插件的页面。

我读过Including file or library from other plugin 但这对我不起作用或者我做错了什么

假设我想将plugin-1用于plugin-2

这是什么意思

do_action( \'my_library_loaded\', plugin_dir_path( __FILE__ ) );
plugin\\u dir\\u路径(FILE ) 哪个插件的路径(插件1或插件2?)我要把这个放在哪里?(在plugin-1或plugin-2中?)

相同的问题add_action( \'my_library_loaded\', \'other_plugin_init_handler\' );

有什么建议吗

1 个回复
SO网友:fuxia

第一个插件base调用do_action()apply_filters(). add_action() 或add_filter().

    基本示例

    基本插件

    <?php # -*- coding: utf-8 -*-
    /**
     * Plugin Name: Base
     * Plugin URI:  http://wordpress.stackexchange.com/q/112075
     */
    
    class Plugin_Base {
    
        public function __construct()
        {
            add_action( \'wp_loaded\', array ( $this, \'plugin_setup\' ) );
        }
    
        public function plugin_setup()
        {
            $headers = get_file_data(
                __FILE__,
                array(
                    \'name\' => \'Plugin Name\',
                    \'uri\'  => \'Plugin URI\'
                )
            );
            $data    = new stdClass;
            $data->plugin_name = $headers[ \'name\' ];
            $data->plugin_uri  = $headers[ \'uri\' ];
            $data->plugin_file = __FILE__;
    
            do_action( \'plugin_base_loaded\', $data );
        }
    }
    
    new Plugin_Base;
    
    注意自定义操作plugin_base_loaded. 这将是所有依赖插件的锚。

    现在,让我们创建第二个插件,该插件应在加载完base之后运行。

    插件插件

    <?php # -*- coding: utf-8 -*-
    /**
     * Plugin Name: Base Addon
     */
    class Plugin_Base_Addon {
    
        protected $data;
    
        public function __construct()
        {
            add_action( \'plugin_base_loaded\', array ( $this, \'setup\' ) );
        }
    
        public function setup( $data )
        {
            $this->data = $data;
    
            add_action( \'wp_footer\', array( $this, \'wp_footer\' ) );
        }
    
        public function wp_footer()
        {
            printf(
                \'<p>I am an addon for <a href="%1$s">%2$s</a> which lives in <code>%3$s</code>.</p>\',
                esc_url( $this->data->plugin_uri ),
                esc_html( $this->data->plugin_name ),
                esc_html( $this->data->plugin_file )
            );
        }
    }
    
    new Plugin_Base_Addon;
    
    如果base未激活,则第二个插件将不会执行任何操作。如果它处于活动状态,它将等待底座加载完毕。然后,它会将有关基的信息打印到前端页脚中。

    你可以在我的文章中看到一个更广泛的例子Initialize a plugin with a configuration object, 代码示例(包括附加插件)包括on GiHub.

结束

相关推荐

Plugins_url()可以在除wp_reqister_script()之外的任何地方运行

所以我应该提前提到,我正在开发一个插件,所以我的url是“mysite”。com/plugin“(以防万一这与我的问题有关。因此,在我的主插件文件(myplugin.php)中,我添加了以下内容:$plugin_url = plugins_url(\'/my-plugin-directory/\'); 紧接着wp_enqueue_style(\'wp_enqueue_scripts\', $plugin_url . \'css/boxes.css\'); 很好,到目前为止还不错。插件u