Wordpress钩子将实例化一个类,以便能够在publish_CPT挂钩之前使用get_post_types

时间:2017-06-16 20:13:01

标签: wordpress wordpress-hook

我有一个问题,我需要在wordpress中实例化一个类,以便在构造函数中我可以使用函数get_post_types并在publish_post钩子之前发生该钩子(我假设它是在publish_CPT钩子周围)。

这是我到目前为止的代码

class Transient_Delete {

    /**
     * @var array of all the different post types on the site
     */
    private $postTypes;
    /**
     * @var array of wordpress hooks we will have to assemble to delete all possible transients
     */
    private $wpHooks;

    public static function init() {
        $class = __CLASS__;
        new $class;
    }

    public function __construct()
    {
        $this->postTypes = array_values( get_post_types(array(), 'names', 'and') );
        $this->wpHooks = $this->setWpHooks($this->postTypes);
        add_action('publish_alert', array($this, 'deleteAlertTest'));
    }

    private function setWpHooks($postTypes)
    {
        $hooks = array_map(function($postType) {
            return 'publish_' . $postType;
        }, $postTypes);

        return $hooks;
    }

    private function deleteAlertTest($post)
    {
        $postId = $post->ID;
        echo 'test';
    }
}
add_action( 'wp_loaded', array( 'Transient_Delete', 'init' ));

另一个注意事项是,这是在mu-plugins目录中。

注意:"警告" publish_alert是自定义帖子类型。

1 个答案:

答案 0 :(得分:0)

好的,这是我的错,如果我将deleteAlertTest函数更改为public,看起来钩子publish_alert工作正常。任何关于为何将它作为私人功能的想法都有这种效果?它属于同一类。