これにはかなり困惑しています。プラグインクラス内でadd_actionを使用して特定のことを行います。スクリプトやスタイルをhead、wp_ajaxなどに追加します。以下に__constructのアクションを示します。
function __construct(){
add_action('admin_menu', array($this, 'sph_admin_menu'));
add_action('sph_header', array($this, 'sph_callback'));
add_action('sph_header_items', array($this, 'sph_default_menu'), 1);
add_action('sph_header_items', array($this, 'sph_searchform'), 2);
add_action('sph_header_items', array($this, 'sph_social'), 3);
//Below here they don't work. I have to call these outside of the class (but I need class variables within the functions)
add_action('wp_print_styles', array(&$this, 'sph_stylesheets'));
add_action('wp_print_scripts', array(&$this, 'sph_scripts'));
add_action( 'wp_ajax_nopriv_add_to_list', array(&$this, 'le_add_to_list'));
add_action( 'wp_ajax_add_to_list', array(&$this, 'le_add_to_list'));
add_action('init', array(&$this, 'register_menu'));
}
誰かがこのようなものに出くわしたことはありますか?クラス内から上記のフックを使用する方法を知りたいのですが、クラス外でアクションを実行するのは面倒です!
さらに、フックとして機能する関数に
—
ジョセフリーディ
public
可視性があることを確認してください。
Bainternetそうです。@ジョセフそれかもしれない。構築物は公開できますか?乾杯
—
ハーレー
@Harley-bainternetは、インスタンスをどこで作成するかを尋ねていました。
—
スティーブンハリス
@Harley可視性修飾子を含めない場合、自動的にパブリックに設定されます。フックされているアクションを実行する実際の関数を参照していました。
—
ジョセフリーディ
$my_plugin = new MYClass();
問題なくクラス内からこれらの同じフックを使用したため。