add_action outside a plugin

时间:2014-08-05 作者:Andrea Moro

我正在尝试创建自己的类,以便在所有WP站点中进行一些最常见的更改。如在不需要时删除规范标记或更改元描述。

我没有创建插件,因为我不熟悉它。

我已经写了下面的课程,但我还没能让它完全发挥作用。只要调用了\\u setup函数,就会在源代码上输出任何其他内容。类似地,所有add\\u操作(“wp\\u head”)都会被忽略。

我怀疑这是因为我回想起这门课太晚了,但我不知道是否是这样,我如何才能测试它。

    class Stuff_Frontend {
    private static $_instance = null;

    public static function init()
    {
        add_action( \'wp_head\', array(self::instance(), \'_setup\'));
    }

    public static function instance()
    {
        // create a new object if it doesn\'t exist.
        is_null(self::$_instance) && self::$_instance = new self;
        return self::$_instance;
    }

    /**
     * Setup the class
     * Adds and removes a lot of filters.
     */
    function _setup() {
        echo "I\'m here;";
        add_action( \'wp_head\', array(self::instance(), \'head\' ), 1 );

        // Remove actions that we will handle through our wpseo_head call, and probably change the output of
        remove_action( \'wp_head\', \'rel_canonical\' );
        remove_action( \'wp_head\', \'index_rel_link\' );
        remove_action( \'wp_head\', \'start_post_rel_link\' );
        remove_action( \'wp_head\', \'adjacent_posts_rel_link_wp_head\' );
        remove_action( \'wp_head\', \'rsd_link\' );
        remove_action( \'wp_head\', \'wlwmanifest_link\' );

        add_action( \'mystuff\', array(self::instance(), \'change_metadesc\' ), 10 );
    }

    /**
     * Main wrapper function attached to wp_head. This combines all the output on the frontend.
     */
    public function head() {
        echo "this is a test for my class head";

        /**
         * Action: \'mystuff\'
         */
        do_action( \'mystuff\' );

        return;
    }   

    /**
     * Change the meta description element.
     *
     * @param bool $echo Whether or not to echo the description.
     *
     * @return string
     */
    public function change_metadesc() {

        echo "this is an attempt to change the description";
    }
    }        
在函数中调用上述类。php ini使用以下语句:

include( locate_template( \'MyStuff.php\' ) );
Stuff_Frontend::init();
任何提示都将不胜感激。谢谢

1 个回复
SO网友:Milo

您添加_setup 功能到wp_head 没有优先级,所以它的优先级为20。您试图在该函数中删除的所有操作要么具有较高的优先级(较低的数字),要么具有相同的优先级,但已经在您前面的队列中,因此当您的_setup 函数运行时,它们已经发送了输出。没有理由等到wp_head 要删除这些操作,可以在init 行动

仅供参考,您需要的所有文件都是plugin header 它将是一个独立的插件。

结束

相关推荐

是否使用wp_LIST_CATEGORIES在INCLUDE参数中包含名称或插件?

我在本地和远程工作,通过git推送代码。我在下面设置了当前代码,它查找标记并使用wp_list_categories. 我需要使用include 参数,因为没有带标记的层次结构(在此实例中我不能使用类别)。然而,由于我在本地和远程工作,从本地到远程的ID可能会不一样。因此,理想情况下,我想包括name 或slug, 但我知道include 参数仅允许ID。有没有办法包括name 或slug 在include 参数想法:我的朋友说我们可以有一个名字列表,然后循环遍历所有名字,然后使用get\\u term\