如何全局使用wp_LOCALIZE_SCRIPT()AJAX URL

时间:2018-11-16 作者:Behseini

我已将此添加到functions.php 并且需要使用ajaxURL 在模板中的所有排队脚本中(而不是在此处仅将一个脚本排队

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 到所有脚本?

2 个回复
最合适的回答,由SO网友:vikrant zilpe 整理而成

您只能在少数模板或特定页面上有条件地回显代码。以下是一个示例:

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
}

SO网友:vikrant zilpe

要使ajaxurl变量在前端可用,最简单的方法是将此代码段添加到主题的函数中。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”可以在您的主题中使用,因此您可以开始使其更加现代和动态。

结束