• 複数の固定ページのうち、 WP-Members を利用してある特定の固定ページを未ログインだとブロックという設定をしています。

    ログインをして、このページを見ると会員のみが見ることができる固定ページが表示されます。

    この固定ページ(会員専用ページ)にアクセスしている人にはライブチャットのサービスを提供したいのですが、その際zopimチャットで必要な JavaScript を読み込ませて、 Zopim チャットが表示されるようにしたいと思っています。

    いままでは固定ページの上部に、該当する JavaScript のコードをいれ( <script type="text/javascript">〜</script> )対応していたのですが、この固定ページの修正をhtmlなどを知らない人が随時修正(文言の修正です)をするため、 Visual Composer を使って編集できるようにしました。

    すると、 Visual Composer が本文中にある JavaScript に対してショートコード [vc_row] [/vc_row] で囲まれてしまい JavaScript が動作しなくなってしまいました。

    この固定ページにだけ、誰にも編集されないように JavaScript をいれたいのですが、どのように行えばよいか教えていただけませんでしょうか。

    よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 固定ページをスラッグで特定して、そのときだけJavaScriptを出力すればよいと思います。条件分岐タグ is_page を使うか、テーマのページテンプレート page-$slug.php で。

    トピック投稿者 nobuoo

    (@nobuoo)

    ありがとうございます。

    具体的にテンプレートを作成したことがないのですが、元の固定ページの pages.php を改造して特定スラッグのときに JavaScript を入れておくという形にするということでしょうか?

    現在、元テーマ( themeforest で購入したテーマです)の子テーマを使って、function.php などを入れていますが、この場合は子テーマの方で新しい php ファイルを作って動かすということになりますでしょうか?

    子テーマをお使いでしたら、JSを外部ファイル化して子テーマのディレクトリに入れ、以下のような感じで子テーマのfunctions.phpに記載して呼び出すのが良いのではないでしょうか。

    function my_scripts() {
    	if ( is_page('hoge') ) {
    		wp_enqueue_script( 'hoge', get_stylesheet_directory_uri() . '/hoge.js', array() );
    	}
    }
    add_action( 'wp_enqueue_scripts', 'my_scripts' );

    そのチャットの仕様は知らないので、もしそれがbody内にscriptを入れないといけないようなものだとこの方法は使えないことになりますが……。

    bodyの中にスクリプトを入れる例です。目的の固定ページのスラッグを hoge とします。

    1. テーマの page.php を複製して page-hoge.php を作ります。
    2. page-hoge.php の中に JavaScript を出力するコードを書きます。このとき if で is_page( ‘hoge’ ) を判定する必要はありません。参考に テンプレート階層 を見てください。

    こうするとスラッグ hoge の固定ページに限って JavaScript が出力されます。

    トピック投稿者 nobuoo

    (@nobuoo)

    Ayustar 様、 gblsm 様

    御指南いただきありがとうございます。とても勉強になります。
    後ほどやってみたいと思います。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「ある1つの固定ページのみに Javascript をいれたい」には新たに返信することはできません。