質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

2712閲覧

WordPress、カスタムフィールドのjs指定における出力について。

time_

総合スコア16

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/01/06 10:10

編集2017/01/06 11:02

はじめまして。

###前提・実現したいこと
WordPressにおいて、固定ページごとに指定する別々のjsを読み込ませたく、以下の方法を使っておりますが、うまく出力されません。

① footer.phpに以下を挿入。

<?php if (is_page()) { $footer_insert = get_post_meta($post->ID,footer_insert,true); if($footer_insert) { echo $footer_insert; } } ?>

② 「固定ページ」内「カスタムフィールド」にて、以下を指定。
【名前】footer_insert
【値】<script src="<?php bloginfo('template_url'); echo '/jquery/grayscale.js?' . filemtime( get_stylesheet_directory() . '/jquery/grayscale.js'); ?>"></script>

結果として、以下のようにそのまま出力されてしまいます。

<script src="<?php bloginfo('template_url'); echo '/jquery/grayscale.js?' . filemtime( get_stylesheet_directory() . '/jquery/grayscale.js'); ?>"></script>

本当は以下のような表記で出力したいです。

<script src="http://example.com/jquery/grayscale.js?1479991738"></script>

filemtimeなど表示が絡んでいるのでしょうか。

どうか宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

mizさんの書かれている通りスクリプトは wp_enqueue_script でコントロールするほうが良いです。

で、カスタムフィールドの本文内にPHPコードを書かれていますが、当然文字列として扱われます。
なので、必要な部分 /jquery/grayscale.js? のみカスタムフィールドに入れるようにされたほうが良いでしょう。

JavaScriptやCSSをたくさん入れるのであれば、それに対応するカスタムフィールドをそれぞれ作るか、カンマ区切りで入れておいて後から出力時に処理するとかすればよいです。

投稿2017/01/06 17:48

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

time_

2017/01/07 13:51

返答遅くなりすみませんm(__)m ご返答ありがとうございます。 カスタムフィールドに該当のコードを入れれば出力で反映されるだと勝手に思っていたのですみませんm(__)m
guest

0

ベストアンサー

WordPressであれば、スクリプトを読み込ませるときは以下のようにアクションフックを使うことが推奨されています。

PHP

1 2// functions.phpに記載 3function my_wp_enqueue_scripts() { 4 5 if( is_page('alpha') ) { 6 wp_enqueue_script( 'script-alpha', bloginfo('template_url').'/jquery/grayscale.js?', array(), filemtime( get_stylesheet_directory() . '/jquery/grayscale.js'), true ); 7 } 8 else if( is_page('beta') ) { 9 wp_enqueue_script( 'script-beta', bloginfo('template_url').'/jquery/grayscale.js?', array(), filemtime( get_stylesheet_directory() . '/jquery/grayscale.js'), true ); 10 } 11} 12add_action( 'wp_enqueue_scripts', 'my_wp_enqueue_scripts' );

参考URL
関数リファレンス/wp enqueue script - WordPress Codex 日本語版
関数リファレンス/is page - WordPress Codex 日本語版

投稿2017/01/06 12:12

編集2017/01/06 12:16
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

time_

2017/01/07 13:49

遅くなりすみません。 ご返答ありがとうございます。 なるほど! my_wp_enqueue_scriptsで分岐させて、使い分ければいいのですね。 すごく助かりました☆彡 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問