今回はワードプレスにインラインスクリプトを入れる場合の対処方法です。
jQueryなどでオプション指定したりタグなどを入れ込んだりするときに有効です。
結構簡単です。割と最近なんですがそれ用の関数がもう出ています。ワードプレスの4.5以上の機能になりますのでご注意下さい。
wp_add_inline_script( $handle, $data, $position );
$handle:インラインスクリプトを追加するスクリプト名(必須) 。
$data:追加するJavaScriptを含む文字列(必須)。
$position:インラインスクリプトを$handleの前または後に追加する。デフォルトは後(オプション)。
これですね。
jsライブラリなどをwp_enqueue_script関数で読み込んでいるところに一緒に記述すると良いですね。
主にfunction.phpに記載します。
簡単に実装例を載せておきます。
インラインスクリプトの表示例です。
<?php
function load_inline_script() {
wp_enqueue_script('app', get_template_directory_uri().'/js/app.js', array('jquery'), '1.0', true);
if ( function_exists( 'wp_add_inline_script' ) ) {
$tag = "";
if(is_home()){
$tag = "
(function($){
apps.mainslider();
apps.pagescroller();
})(jQuery);";
}
wp_add_inline_script('app', $tag, 'after');
}
}
add_action('wp_enqueue_scripts', 'load_inline_script');
上記の例はapp.jsを読み込ませてその下にインラインで表示されるスクリプトです。 条件としてトップページのみの条件にしてあります。
<script type='text/javascript' src='http://example.com/wp-content/themes/themenames/js/app.js'></script>
<script type='text/javascript'>
(function($){
apps.mainslider();
apps.pagescroller();
})(jQuery);
</script>
それからスクリプトタグも載せたい場合は以下の方法でできます。
apply_filters( 'script_loader_tag', $tag, $handle, $src )
$tag:キュースクリプトのタグ(文字列)。
$handle:スクリプトの登録ハンドル(文字列)
$src:スクリプトのソースURL(文字列)
キューに入れられたスクリプトをHTMLスクリプトタグでフィルタリングします。
<?php
function app_script() {
wp_enqueue_script('app', get_template_directory_uri().'/js/app.js', array('jquery'), '1.0', true);
}
add_action('wp_enqueue_scripts', 'app_script');
function load_inline_script( $tag, $handle, $src ) {
if ( $handle == 'app' ) {
if(is_home()){
rreturn $tag .
'<script id="inline-script">
(function($){
apps.mainslider();
apps.pagescroller();
})(jQuery);
</script>'."\n";
}
}
return $tag;
}
add_filter( 'script_loader_tag', 'load_inline_script', 10, 3 );
とくにapp.jsとか読み込ませていない場合は必ず読み込まれているjquery-migrateの後に表示させる方法が簡単かもしれません。
<?php
function load_inline_script( $tag, $handle, $src ) {
if ( $handle == 'jquery-migrate' ) {
if(is_home()){
return $tag .
'<script id="inline-script">
(function($){
apps.mainslider();
apps.pagescroller();
})(jQuery);
</script>'."\n";
}
}
return $tag;
}
add_filter( 'script_loader_tag', 'load_inline_script', 10, 3 );
最近はフェイスブック、ツイッター、グーグルやヤフーのタグマネージャーなどはこのパターンで入れると良いかもしれませんね。
読み込んでいるスクリプトにidを付加することも可能です。以下は例です。
<?php
function add_id_to_script( $tag, $handle, $src ) {
if ( 'app' === $handle ) {
$tag = '<script type="text/javascript" src="' . esc_url( $src ) . '" id="appjs" data-app-key="MY_APP_KEY"></script>';
}
return $tag;
}
add_filter( 'script_loader_tag', 'add_id_to_script', 10, 3 );
いろいろと使えますね。
参考になれば幸いです。
∞Tadashi Suyama∞
あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...
19 Feb 2022
今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...
12 Feb 2022
Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...
22 Jan 2022
明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...
10 Jan 2022
最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...
02 May 2021
ウェブエンジニアの須山のブログです。
WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。