it-swarm-ja.com

WordPressのプラグインオプションとjQuery

私はいくつかのCSSを変更するためにjQueryを使用するプラグインを作成していますが、私が理解することができないのはWordPressプラグインオプションでjQueryの実行を制御する方法です。 WordPressのオプションはjQueryの "変数"として使用できますか?それとも、すべての場合に固有の.jsファイルが必要ですか。

2
Triple P

変数はwp_localize_scriptを使用してjQueryまたは任意のJavaScriptに渡すことができます。

例:

add_action( 'template_redirect', 'prefix_enqueue_vars' );
function prefix_enqueue_vars() {
$script_vars = array(
      'setting_1' => get_option( 'some_option' ),
      'setting_2' => get_option( 'another_option' ),
);

wp_enqueue_script( 'my_script', 'path/to/script.js', array( 'jquery' ), true);
wp_localize_script( 'my_script', 'unique_name', $script_vars );

}

JavaScriptで変数を取得する方法:

jQuery(document).ready(function($) {

$var_1 = unique_name.setting_1
$var_2 = unique_name.setting_2

});

WordPressは、JavaScriptファイルをエンキューする前に、変数を<sript> </script>タグの間に出力するので、それらは使用可能になります。

詳しくはWordPressのOttoの wp_localize_script をご覧ください。

編集する

値を返す関数に変数を追加してみてください。私は以下の正確なコードを使っていて、それはうまくいきます。

wp_localize_script( 'cmb-scripts', 'MaxChar', array( 'charlimit' => c3m_get_the_size( $excerpt_length[0] ) ) );

以下の変数を返す関数:

function c3m_get_the_size() {
global $post; global $prefix;
$box_size = get_post_meta( $post->ID, $prefix.'box_size', true );
 if  ( $box_size == 'single-single' ) { $excerpt_length = 150; 
} elseif ( $box_size == 'single-double' ) { $excerpt_length = 150; 
} elseif ( $box_size == 'single-triple' ) { $excerpt_length = 150;

}
return $excerpt_length;
}
3
Chris_O