私が見たソリューションは、テーマにJavaScript機能を追加するという観点からのものです。ただし、OPは、具体的には、「どのように正確に1 つの WordPressページにですか?」と尋ねました。これは、WordpressブログでJavaScriptをどのように使用しているのかと思われます。個々の投稿には、JavaScriptを利用したさまざまな「ウィジェット」が含まれている可能性があります。たとえば、投稿では、ユーザーが変数(スライダー、チェックボックス、テキスト入力フィールド)を変更したり、結果をプロットまたは一覧表示したりできます。
JavaScriptの観点から始めます。
- JavaScript関数を別の「.js」ファイルに記述します
投稿のhtmlに重要なJavaScriptを含めることについては考えないでください。コードでJavaScriptファイルを作成してください。
- JavaScriptと投稿のhtmlをインターフェースする
JavaScriptウィジェットがHTMLコントロールおよびフィールドと相互作用する場合、JavaScriptからこれらの要素をクエリおよび設定する方法、およびUI要素にJavaScript関数を呼び出させる方法を理解する必要があります。以下に例をいくつか示します。まず、JavaScriptから:
var val = document.getElementById(“AM_Freq_A_3”).value;
そしてhtmlから:
<input type="range" id="AM_Freq_A_3" class="freqSlider" min="0" max="1000" value="0" oninput='sliderChanged_AM_widget(this);'/>
- jQueryを使用してJavaScriptウィジェットの初期化関数を呼び出す
ページの準備ができたときにJavaScriptウィジェットを構成して描画する関数の名前を使用して、これを.jsファイルに追加します。
jQuery(document).ready(function( $ ) {
your_init_function();
});
- 投稿のhtmlコードで、投稿に必要なスクリプトをロードします
Wordpressコードエディタでは、通常、投稿の最後にスクリプトを指定します。たとえば、メインディレクトリにスクリプトフォルダーがあります。内部には、いくつかの投稿が共有する可能性のある一般的なJavaScriptを含むユーティリティディレクトリがあります。この場合、自分の数学ユーティリティ関数とflotr2プロットライブラリの一部です。たとえば、メディアマネージャーを使用する代わりに、日付に基づいてサブディレクトリを指定して、投稿固有のJavaScriptを別のディレクトリにグループ化する方が便利です。
<script type="text/javascript" src="/scripts/utils/flotr2.min.js"></script>
<script type="text/javascript" src="/scripts/utils/math.min.js"></script>
<script type="text/javascript" src="/scripts/widgets/20161207/FreqRes.js"></script>
- jQueryのエンキュー
WordpressはjQueryを登録しますが、jQueryをエンキューしてWordpressに指示しない限り、jQueryを使用できません。そうしないと、jQueryコマンドは失敗します。多くのソースがこのコマンドをfunctions.phpに追加する方法を説明していますが、他の重要な詳細を知っていると想定しています。
まず、テーマを編集することはお勧めできません。テーマを将来更新すると、変更がすべて消去されます。子供のテーマを作る。方法は次のとおりです。
https://developer.wordpress.org/themes/advanced-topics/child-themes/
子のfunctions.phpファイルは、同じ名前の親テーマのファイルをオーバーライドせず、それに追加します。子テーマのチュートリアルでは、親と子のstyle.cssファイルをエンキューする方法を提案しています。その関数に別の行を追加するだけで、jQueryもキューに入れることができます。子テーマのfunctions.phpファイル全体を次に示します。
<?php
add_action( 'wp_enqueue_scripts', 'earlevel_scripts_enqueue' );
function earlevel_scripts_enqueue() {
// styles
$parent_style = 'parent-style';
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( $parent_style ),
wp_get_theme()->get('Version')
);
// posts with js widgets need jquery
wp_enqueue_script('jquery');
}