add_filter函数在wordpress中加载头文件之前执行

时间:2017-06-09 14:02:42

标签: php wordpress add-filter

enter image description here我创建了一个与fb登录集成的登录页面。当用户点击忘记密码时,它会重定向到要求输入用户名的页面。单击提交按钮时会生成一条错误消息,指出yu使用fb登录,请更改fb密码。

为了达到这个目的,我使用了add_filter“allow_password_reset hook”。但是在加载头文件之前写入了什么,并且输出显示在头文件的顶部。我已经尝试了我所知道的一切,但问题仍然存在。这是我的代码:

select
    b.isbn
    ,b.title
    ,b.bookprice
    ,b.stock
    ,a.authorname
    ,o.ordernumber
    ,o.numcopies
    ,o.price
from
    book b
    inner join 
        BookAuthor ba on
        ba.isbn = b.isbn
    inner join
        Author a on
        a.authorid = ba.authorid
    left join
        orderline o on
        o.isbn = b.isbn
    left join
        bookorder bo on
        bo.ordernumber = o.ordernumber
where
    b.isbn = 1491936169

1 个答案:

答案 0 :(得分:0)

注:

您的问题无法明确显示所显示的消息的位置,因此这只是一种可用于跟踪$allow变量状态的模式,以便您可以依次显示消息适合:

(使用此代码代替您已有的功能)

class MyPasswordClass {

    /**
     * Track the state of $allow.
     * Change if desired in a class function like so: $this->allow = TRUE;
     *
     * @var bool
     */
    private $allow = FALSE;

    /**
     * Constructor.
     * Set up the action / filter hooks.
     */
    public function __construct() {
        add_filter( 'allow_password_reset', array( $this, 'allow_password_reset' ), 10, 2 );
        add_filter( 'retrieve_password_message', array( $this, 'password_message' ), 10, 4 );
    }

    /**
     * Hooks into WP 'allow_password_reset' filter.
     *
     * @param bool $allow
     * @param int  $user_id
     *
     * @return bool
     */
    public function allow_password_reset( $allow, $user_id ) {
        // If desired, change permission.  Example:
        // $this->allow = TRUE;

        return $this->allow;
    }

    /**
     * Hooks into WP 'retrieve_password_message' filter.
     * Message that displays when user attempts to reset password.
     *
     * @param string $message
     * @param string $key
     * @param string $user_login
     * @param object $user_data
     *
     * @return string
     */
    public function password_message( $message, $key, $user_login, $user_data ) {
        $message = 'My custom error message.';
        return $message;
    }
}

// Instantiate the class so that the filters are set up / used
new MyPasswordClass();