初めてのプラグインでプラグ可能な関数is_user_logged_in()
をオーバーライドする際に問題が発生しました。 pluggable.phpのこの関数はif (!function_exists('...'))
の中にラップされていますので、私のバージョンの関数が問題なく実行されることを期待していましたが、そうでないようです。WordPress:プラグインでプラグイン可能な関数をオーバーライドするときの問題
new session_auth();
class session_auth{
public $sessionUSERNAME; // php session variable for username
public function __construct() {
$this->sessionUSERNAME = $_SESSION['simple_auth']['username']; // php session variable for username
add_filter('is_user_logged_in', array($this, 'is_user_logged_in'), 20);
add_filter('wp_title', array($this, 'wp_title'), 20) ;
}
function is_user_logged_in() {
return true;
}
public function wp_title($title)
{
return $title .'if this is displayed, the plugin is activated';
}
}
wp_title
の私のバージョンが正常にワードプレスの1の代わりに実行されますが、ないis_user_logged_in
の私のバージョンされています。私は何の誤りもありません。
このスクリプトで何が間違っていますか?
ありがとう、私はなぜ/どのようにフィルタが機能するのか誤解しているかもしれません。しかし、なぜそれをクラスの中に入れられないのですか?この特定の機能のために、それはrequieredされていませんが、プラグインのいくつかのpluggable.php機能をクラス内に持っていれば本当に役に立ちました。クラス内でこの作業を行う方法はありますか?いずれにせよ、ありがとう! – apatik
クラス内の関数がクラスに属しているので、これまでどおりに動作するとは思いません。この記事でも同様の問題があります:https://github.com/DevinVinson/WordPress-Plugin-Boilerplate/issues/332とにかく、うれしい! – user1049961
さて、私はこれを回避します。最後に、もし 'is_user_logged_in'で可能ではない間に、' wp_title'がクラス内に置かれた場合の動作はどうなりますか? – apatik