web-dev-qa-db-ja.com

ショートコードが使用されているときにテンプレートファイルにスタイルシートとjsを追加する

ネットを介して何の役にも立たない日数を探した後 - みんなに聞いてみたいです。

問題:私のプラグインのショートコードの使用の一部として、ファイルの先頭にカスタムコードを追加する必要があります。同じファイルとコードが管理ページ(バックエンド)にうまく挿入されますが、テンプレートファイルにロードできません。

ファイルはadd_action( 'admin_print_scripts'、 'add_swm_scripts')を使ってadminヘッドに挿入されます。 &add_action( 'admin_print_styles'、 'add_swm_styles'); wp_enqueue_script()およびwp_register_style()/ wp_enqueue_style()を使用する関数を指す呼び出しこれは問題ありません - しかし - 私が(テンプレートで使用するために)ショートコードの関数に登録された同じファイルを取得しようとすると、何も動作しません。

ショートコードが読み取られ、それに応じた関数が起動されることを確認しましたが、どちらもadd_action( 'wp_enqueue_scripts'、 'swm_scripts'); 、add_action( 'init'、 'register_swm_scripts');またadd_action( 'wp_head'、 'print_swm_scripts');働くでしょう。私はこれ以上に試してみました実用的な解決策を見つけることができません。誰かが有効なトリックを知っているならば - 私はあるアドバイスよりも感謝します。

前もって感謝します!

ハービー

1
herbie

あなたのショートコードハンドラにwp_enqueue_script()を入れてください。

add_shortcode('myshortcode', 'my_shortcode_handler');

function my_shortcode_handler($atts) {
  wp_enqueue_script('my-script', plugins_url('my-script.js', __FILE__), array('jquery'), '1.0', true);

  // actual shortcode handling here
  return "bacon flavored shortcode here";
}

これは間違いなく私のためにmy-script.jsファイルをロードします。フッターにロードされます。ショートコードが使用されているかどうかを知るために投稿コンテンツにたどり着かなかったので、私はそれがヘッダに条件付きでロードする方法があるとは思わない。

これを確認してください。 http://scribu.net/wordpress/conditional-script-loading-revisited.html

2
helgatheviking