私は最初のWPプラグインを作成しています。プラグイン管理領域で利用可能なフォームを通して選択された特定のページにのみいくつかのJSとCSSファイルをロードするはずです。フォームで選択されると、ページタイトルはDBのwp_optionsテーブルに格納され、データは$ page_selectedという名前の変数に格納されます。フォームで選択したページにのみJSファイルとCSSファイルをロードするには、is_page()関数を使用して、$ page_selected変数をパラメータとして渡したいと思いました。
function my_custom_tooltip() {
if ( is_page($page_selected) ) {
wp_enqueue_style( 'custom_tooltip_frontend_css', plugins_url('custom-image-tooltip/custom-image-tooltip.css') );
wp_enqueue_script( 'custom_tooltip_frontend_js', plugins_url('custom-image-tooltip/custom-image-tooltip.js'), array('jquery'), '', true );
}
} add_action('wp_enqueue_scripts', 'my_custom_tooltip');
不幸なことに、私の場合、条件文は正しく機能しません。ユーザーがフォームで選択したページを現在表示されているページと一致させて、同じ結果を得る方法はありますか?
$page_selected
がページタイトルを含む文字列を返す場合、それはうまくいくはずです。私はそれをテストしました、そしてis_page()
はページタイトル、ページIDとスラッグを受け入れます。
あなたが問題に直面しているのなら、データベースにページIDを保存してis_page()
でそれを使うほうが良いでしょう。
この条件文に渡すことができる引数の詳細については https://codex.wordpress.org/Function_Reference/is_page を参照してください。
私はいくつかのかなりの変更を加えます、そして私はこれがあなたのお役に立つことを願っています。以下のコードを試してください。
function my_custom_tooltip() {
wp_enqueue_style( 'custom_tooltip_frontend_css', plugins_url('custom-image-tooltip/custom-image-tooltip.css') );
wp_enqueue_script( 'custom_tooltip_frontend_js', plugins_url('custom-image-tooltip/custom-image-tooltip.js'), array('jquery'), '', true );
}
if(is_page($page_selected)){
add_action('wp_enqueue_scripts', 'my_custom_tooltip');
}
ここで、$page_selected
について確認してください。
注: テンプレートファイルではなく、常にテーマのfunctions.phpファイルにenqueue自分のスクリプトを含める必要があります。テンプレートファイルはちょうど良い場所ではありません99.9%。
is_page()
は、次のように複数の形式で使用できます。
// When any single Page is being displayed.
is_page();
// When Page 42 (ID) is being displayed.
is_page( 42 );
// When the Page with a post_title of "Contact" is being displayed.
is_page( 'Contact' );
// When the Page with a post_name (slug) of "about-me" is being displayed.
is_page( 'about-me' );
// Returns true when the Pages displayed is either post ID 42, or post_name "about-me", or post_title "Contact".
is_page( array( 42, 'about-me', 'Contact' ) );
注: 配列機能はバージョン2.5で追加されました。
このコードをテンプレートファイル内で実行している場合は、問題なく動作しますが、このコードがfunctions.phpまたはプラグインファイルに含まれていると、 debug.log
にこのエラーが発生します。
PHPに関するお知らせ:is_pageは と誤って と呼ばれていました。条件付き照会タグは、照会が実行される前には機能しません。それ以前は、常にfalseを返していました。
この場合、 here で説明されているように、 template_redirect
actionフックを使用できます。
テストされていない...しかし、現在表示されているページの名前(つまりスラグ)を取得するには、このようなものが機能するはずです。
function my_custom_tooltip() {
global $post;
if ( is_object( $post ) && $post->post_type=='page' ) {
if ( $post->post_name == $page_selected ) {
wp_enqueue_style( 'custom_tooltip_frontend_css', plugins_url('custom-image-tooltip/custom-image-tooltip.css') );
wp_enqueue_script( 'custom_tooltip_frontend_js', plugins_url('custom-image-tooltip/custom-image-tooltip.js'), array('jquery'), '', true );
}
}
}
$page_selected
との比較は、もちろんそれが "slug"フォーマットであることを期待しています...あるいはページタイトルと比較するなら$post->post_title
の代わりに$post->post_name
を使うことができます。
注意してください、これはPHPクラスを使うことがその関数の中で大域変数($page_selected
)を使う必要を避けるために役に立つ例です...