web-dev-qa-db-ja.com

wpオプションからjsファイルまたはphpファイルにデータを取得するための最良の方法

私はプログラマーではないので、私は初めてのプラグインを作成しています。私はチュートリアルに従って、コーデックスなどを読んでいます。

私のプラグインは、特定の条件が満たされたときにユーザーに通知を表示することで構成されています。私はそれをjQueryで書き、スタイルとともにプラグインによってエンキューされるjsファイルに配置しました。

私は設定ページと単純なテキストボックスのあるフォームをwpオプションテーブルにデータを保存するための単純なチュートリアルに従って、テストしましたが、データは正常に保存されました。

どうやってwpオプションから自分のjsファイルにデータを転送するのですか。

jQuery('.notice_container').wrap(<'div id="custom_notice"><span>Hello World....</span></div>')

お時間をいただきありがとうございます。

1
David Garcia

フォームの送信にAJAXを使用していないと仮定すると、 wp_localize_script() を使用できます。これが単純化されたバージョンです:

あなたのプラグインファイルで:

function wpse105919_add_scripts(){
  wp_enqueue_script( 'myjs', plugins_url( '/myjs.js', __FILE__ ) );
  wp_localize_script( 'myjs', 'jsLocalizedObject', 'hello world');
}
add_action('wp_enqueue_scripts', 'wpse105919_add_scripts');

myjs.jsファイルの内容:

alert( jsLocalizedObject );

wp_localize_script() は、ドキュメントの<head>jsLocalizedObjectというグローバル変数を追加します。ページのソースを見ると、次のようになります。

<script type='text/javascript'>
/* <![CDATA[ */
var jsLocalizedObject = "hello world";
/* ]]> */
</script>

wp_optionsテーブルから値を取得するには、 get_option() を使用して、hello world関数のwp_localize_scriptの代わりに結果を渡すことができます。

あなたのコードは次のようになります。

function wpse105919_add_scripts(){
  wp_enqueue_script( 'myjs', plugins_url( '/myjs.js', __FILE__ ) );
  $myoption = get_option('option_name', 'default_value');
  wp_localize_script( 'myjs', 'jsLocalizedObject', $myoption);
}
add_action('wp_enqueue_scripts', 'wpse105919_add_scripts');

そしてあなたのjQueryの部分:

jQuery('.notice_container').wrap(<'div id="custom_notice"><span>' + jsLocalizedObject + '</span></div>')

JSをダッシュ​​ボードに読み込む必要がある場合は、代わりに admin_enqueue_script を使用してください。

1
RRikesh