WordPressで自作のプラグインを作ってます。

ある固定ページだけに処理する動作を入れたいのですが
プラグインで使ってるクラス内では、is_page()が反応しないような気がしまして、何か他の方法はありますでしょうか?

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/01/11 13:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント200pt

テンプレートファイルの任意の場所にプラグインのテンプレートタグあるいは実行関数を記述して呼び出す以外に、アクションあるいはフィルターフックを利用する方法があります。

・プラグイン API
http://wpdocs.sourceforge.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API

・プラグインの作成
http://wpdocs.sourceforge.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E6%88%90

・条件分岐タグ
http://wpdocs.sourceforge.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0

: 条件分岐タグが使えるのは WordPress の posts_selection アクションフックの後のみです (wp アクションフックはこれらの条件分岐を使える最初のものです)。テーマの function.php 本文内 (関数の外) では正しく動作しません。


ログインのチェックという事ですので、「wp_head」を使うと良さそうです。(※「wp_head()」によりヘッダーを出力する際に実行されます。)
WordPressのテーマでは、「wp_head()」をheadタグ内で必ず利用するように決められています。(※実行タイミングは異なりますが、「wp_footer()」も同様ですので、フッター出力の際に実行させる場合は「wp_footer」が利用できます。)

・プラグイン API/アクションフック一覧/wp head
http://wpdocs.sourceforge.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/wp_head

  • id:rouge_2008
    どのような動作をするプラグインなのでしょう?
    プラグインの作りによっては、クラス内でもテンプレートの条件分岐タグが動作します。
    特定のページに何かを出力するプラグインの場合、テンプレートにタグあるいは関数を記述して動作させる物が多いと思います。
    例えば「WP SiteManager」プラグインのパンくずナビは、以下の記述を追加して表示させますが、クラス内で条件分岐タグを利用しています。

    <?php if ( class_exists( 'WP_SiteManager_bread_crumb' ) ) { WP_SiteManager_bread_crumb::bread_crumb(); } ?>

    ・パンくずナビの表示
    http://www.wp-sitemanager.com/usage/breadcrumb/


    ※表示機能だけでなくアクセスを記録する場合など、ページアクセスをきっかけに動作するプラグインでしたら、条件分岐タグが利用できると思います。
    作成しようとしているプラグインと同じような機能のプラグインのコードを参考にしてみてはいかがでしょう。
  • id:makocan
    ログインシステムを作りたく、指定したページだけにログインしているかのチェックを入れたく思っております。
    頂いたものだと、テンプレートからプラグインの関数を実行することでテンプレートタグを使えるようにしていると思うのですが、如何程でしょうか?
  • id:rouge_2008
    テンプレートに記述する以外の方法を回答しました。

    ※テンプレートにタグあるいは関数を記述して動作させるプラグインとして「WP SiteManager」を例示しました。
    テンプレートタグを使用できるようにするのが目的ではなく、任意の箇所にナビゲーションを表示するのが目的なので、テンプレートファイルに記述する方式なのだと思います。
    結果的にプラグインファイル内でテンプレートタグの条件分岐が動作するようになっています。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません