WordPressプラグインの作成中です。今回はWordPressで投稿が表示されたときにJSを起動する方法に関して調べます。
JSのonload()
このメソッドを使用すると画面が描画されるタイミングでJSを起動できます。
JSの動くタイミング
通常のJS起動は、下のようなときに使用することが多いと思います。
- ボタンが押されたとき
- カーソルをフォーカスしたとき
- その他何かしらの入力があったとき
しかし、「今回は画面が起動したとき」のイベントを受けてJSの処理を動かしたいと思っています。そこで使用するのが「onload()」になります、
具体的には下のようなコードで行います。
<!DOCTYPE html> <html lang="en"> <script>function myFunc() { alert("test");}</script> <body onload="myFunc()">
WordPressプラグインの場合
今回の実装では WordPressのプラグインで投稿画面にHTMLを挿入したいのでプラグインを使用して投稿画面にHTMLを挿入する処理を実装する必要があります。
JSのソースを投稿画面表示時に挿入する方法に関して調べます。
1つの解決策
調査していたのはwp_enqueue_scripts
というメソッド(イベント)が起動したときに文字列を出力してみたところ以下のようなところに文字列が出力されました。
つまり、WordPressの出力しているHTMLクラス「wrap」と「content」の間です。具体的にはサイドバーの中に出力されていました。
そして右クリックしたときの検証では確認できませんでした。。。
ポイント
各アクションフックの起動するタイミングでそれぞれのHTML出力場所を名確認する(出力する場所はこちらのページから抜粋)
- wp_enqueue_scriptsのイベントで出力する場所を確認
- get_fotterも同様
そして、試してみたところいくつかの勘違いがありました。
勘違いしたところ
add_actionする場所(タイミング)が違うとうまく起動してくれない。。。
プラグインを有効にするタイミング、つまりプラグインファイルからadd_actionしたメソッドでwp_enqueue_scriptsなどの登録処理を行ってもうまく動きませんでした、具体的には下のようなコードでやりました。
/*
Plugin Name: CustomQuestionaryPlugin
Plugin URI: (プラグインの説明と更新を示すページの URI)(未決定)aaa
Description: アンケートを作成、ブログ記事の中に埋め込むことができ、集計結果をダッシュボードで確認ができる。
Version: 1.0
Author: ZenryokuService
Author URI: https://zenryokuservice.com/
License: GPL2
*/
// アンケートを記事に挿入するスクリプト
function insertQuestionary() {
wp_register_script('insertQuestionary'
,plugins_url('insertPOST.js', __FILE__));
wp_enqueue_script( 'insertQuestionary' );
echo "Testing insert!";
}
// ダッシュボードに追加するための関数(プラグイン有効時)
function addCustomQuestionary() {
// ダッシュボードにこの表示が出るように追加する
add_menu_page( 'Test Plugin', 'CustomQuestionary', 'manage_options' , 'test-plugin' , 'helloCustomQuestionary' );
// 投稿記事にアンケートを表示するスクリプトをリンクする
add_action( 'wp_enqueue_scripts', 'insertQuestionary' );
}
// 管理メニューを表示した時に
//add_action('wp_dashboard_setup', 'addCustomQuestionary');
add_action('admin_menu', 'addCustomQuestionary' );
add_action('wp_enqueue_scripts', 'insertQuestionary' );
do_action( 'addCustomQuestionary' );
処理がちょっと遅いようにも見えますが。。。
とりあえずは、これで投稿画面表示時に指定のJSを起動することができました。
まとめ
プラグインからJSを投稿画面表示時に起動させたい場合はwp_enqueue_script
を使用してやる
// アンケートを記事に挿入するスクリプト
function insertQuestionary() {
wp_register_script('insertQuestionary'
,plugins_url('insertPOST.js', __FILE__));
wp_enqueue_script( 'insertQuestionary' );
}
add_action('wp_enqueue_scripts', 'insertQuestionary' );
上のplugins_url('insertPOST.js', FILE)
で作成したプラグインフォルダにある「insertPOST.js」を参照するようになり、ここに定義しているfuncitonを起動できる。
insertPOST.js
function testing() {
alert("Testing");
}
window.onload = testing;
このような形で作成したHTMLを挿入しようと思います。
でわでわ。。。
Java関連ページ
- Java はじめて 1 〜メインメソッド〜
- Java はじめて2 〜メソッドを呼び出す〜
- Java はじめて3 〜コメントの書き方〜
- Java はじめて4〜練習問題をやってみる〜
- Java はじめて5 〜変数について〜
- Java はじめて6 〜変数について2、byte, char, boolean型〜
- Java はじめて7 〜配列とは、配列の使い方〜
- Java はじめて8 〜booleanとif~
- Java はじめて 9 〜switch文〜
- Java はじめて 10 〜ループ処理A: for文1〜
- Java はじめて 11 〜ループ処理A: for文2 拡張for文〜
- Java はじめて12 〜ループ処理B: while文〜
- Java はじめて13 〜ループ処理C: do-while文〜
- Java はじめて14 〜クラスの作り方〜
- Java はじめて15 〜クラス型変数の使い方〜
- Java はじめて16 〜クラス設計から実装〜
- Java はじめて17 〜設計後の部品を実装する1〜
- Java はじめて18 〜設計後の部品を実装する2〜
- Java はじめて19 〜コンストラクタの役割を見る〜
- Java はじめて20 〜チェック処理クラスを作る〜
- Java はじめて21 〜オブジェクト指向的分析、アプリの拡張をする〜
- Java はじめて22 〜オブジェクト指向的分析、アプリ拡張の実装とテスト〜
- Java はじめて23 〜テスト駆動型開発を行う〜
- Java はじめて24 〜JUnitでのテスト駆動型開発1〜
- Java はじめて25 〜JUnitでのテスト駆動型開発2: テストケース作成〜
- Java はじめて26 〜JUnitでのテスト駆動型開発3: クラスの実装〜
- Java はじめて27 〜JUnitでのテスト駆動型開発4: 追加修正と実装〜
- Java はじめて28 〜JUnitでのテスト駆動型開発5: ファイル出力の実装〜
- Java はじめて29 〜JUnitでのテスト駆動型開発6: ファイル読み込みのテスト〜
- Java はじめて30 〜JUnitでのテスト駆動型開発7: テストクラスの実装方法〜
- Java はじめて31 〜JUnitでのテスト駆動型開発8: 処理をつなげたテスト〜