これを私のfunctions.php
に追加しました。テンプレート内のすべてのスクリプトでajaxURL
を使用する必要があります(ここでは1つのスクリプトだけをキューに入れる代わりに)。
add_action( 'wp_enqueue_scripts', 'ajaxify_enqueue_scripts' );
function ajaxify_enqueue_scripts() {
wp_localize_script( 'ajaxify', 'ajaxURL', array('ajax_url' => get_template_directory_uri() . '/app/login.php' ));
}
add_action( 'wp_ajax_nopriv_set_ajaxify', 'set_ajaxify' );
add_action( 'wp_ajax_set_ajaxify', 'set_ajaxify' );
しかし、私はAjaxメソッドを呼び出そうとすると、私はこのエラーを得ています
Uncaught ReferenceError: ajaxURL is not defined
すべてのスクリプトにajaxURL
を追加する方法はありますか?
ごく少数のテンプレートまたは特定のページで条件付きでコードをエコーすることができます。これが一例です。
add_action ( 'wp_head', 'my_js_variables' );
function my_js_variables(){
// for specific page templates
$current_template = get_page_template();
// return if there is no page template, or if the page template is other than template-x1.php or template-x2.php
if( !isset($current_template) || ( $current_template != 'template-x1.php' && $current_template != 'template-x2.php' ) ){ return; } ?>
<script type="text/javascript">
var ajaxurl = <?php echo json_encode( admin_url( "admin-ajax.php" ) ); ?>;
var ajaxnonce = <?php echo json_encode( wp_create_nonce( "itr_ajax_nonce" ) ); ?>;
var myarray = <?php echo json_encode( array(
'foo' => 'bar',
'available' => TRUE,
'ship' => array( 1, 2, 3, ),
) ); ?>
</script>
<?php
}
フロントエンドでajaxurl変数を利用できるようにする最も簡単な方法は、テーマのfunction.phpファイルにこのスニペットを追加することです。
add_action('wp_head', 'myplugin_ajaxurl');
function myplugin_ajaxurl() {
echo '<script type="text/javascript">
var ajaxurl = "' . admin_url('admin-ajax.php') . '";
</script>';
}
これは、ajax送信ページのURLを取得し、それを使用してHTMLの先頭に変数を作成します。テーマに「ajaxurl」が追加されたため、よりモダンでダイナミックなものにすることができます。