【プラグイン不要】WordPress を導入したウェブサイトの特定の記事・ページに個別に JavaScript を読み込ませる方法。

今回の記事は、先日コラムに書いた 「Googleしごと検索(Google for Jobs)に求人情報を掲載する流れと構造化データマークアップについて徹底解説!」 の関連記事にもなりますので、併せてどうぞ。

WordPress で特定のページ・記事に JavaScript を追加するには?

長くウェブサイト運営を続けていると、「この記事でだけこの JavaScript(JSファイル)読み込ませたいなー」なんて思うこともあると思います。
そんな時、静的サイトであれば該当の html ファイルに追加するだけなので簡単なのですが、WordPress の場合にはそういうわけにいきません。

JavaScript 追加用のフィールドを作成する

下記のコードを functions.php に追加します。
※万が一の時のためにバックアップをとってから作業を行って下さい。

// Custom JS Widget
add_action( 'admin_menu', 'custom_js_hooks' );
add_action( 'save_post', 'save_custom_js' );
add_action( 'wp_head', 'insert_custom_js' );
function custom_js_hooks() {
    add_meta_box( 'custom_js', 'Custom JS', 'custom_js_input', 'post', 'normal', 'high' );
    add_meta_box( 'custom_js', 'Custom JS', 'custom_js_input', 'page', 'normal', 'high' );
}
function custom_js_input() {
    global $post;
    echo '<input type="hidden" name="custom_js_noncename" id="custom_js_noncename" value="'.wp_create_nonce('custom-js').'" />';
    echo '<textarea name="custom_js" id="custom_js" rows="5" cols="30" style="width:100%;">'.get_post_meta($post->ID,'_custom_js',true).'</textarea>';
}
function save_custom_js($post_id) {
    if (!wp_verify_nonce($_POST['custom_js_noncename'], 'custom-js')) return $post_id;
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;
    $custom_js = $_POST['custom_js'];
    update_post_meta($post_id, '_custom_js', $custom_js);
}
function insert_custom_js() {
    if ( is_page() || is_single() ) {
        if ( have_posts() ) : while ( have_posts() ) : the_post();
        echo '<script type="text/javascript">' . get_post_meta(get_the_ID(), '_custom_js', true) . '</script>';
        endwhile; endif;
        rewind_posts();
    }
}

続いて、「投稿」>「新規追加」を開きます。
「表示オプション」を開くと「Custom JS」という項目が追加されているはずなので、「Custom JS」にチェックを入れます。
※フィールドの名前を変更する場合は、6・7行目の「Cuntom JS」を別のものに変更して下さい。

【プラグイン不要】WordPress を導入したウェブサイトの特定の記事・ページに個別に JavaScript を読み込ませる方法。

あとはここに JavaScript を追加して、記事を「公開」するだけです。
<head></head> に反映されていることを確認して下さい。