wp_localize_script не делает admin- ajax. php видимым для кода JS - PullRequest
0 голосов
/ 20 апреля 2020

Новое в Wordpress здесь.

Я создал новую страницу "docs" и связал с ней новый шаблон под названием "docs. php".

Я также создал child- тема для этого шаблона и применил его к Wordpress. структура выглядит следующим образом:

  • двадцать двадцать детей
    • js
      • документы. js
    • документы. php
    • функции. php
    • стиль. css

документы. php:

<?php
/*
Template Name: docs
*/
?>
<script src="https://code.jquery.com/jquery-3.5.0.min.js"></script>
<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri() . '/js/docs.js'; ?>"></script>
<button id="test">test</button>

И JS:

jQuery(document).ready(function($) {
    console.log('jqueryOK');
    jQuery("#test").click(function(e) {
        jQuery.ajax({
        type : "post",
        dataType : "json",
        url : the_ajax_script.ajaxurl, // <================ here lies the issue
        data : {action: "getDocsFromCode", download_id : "testCode"},
        success: function(response) {
           console.log("response => ", response);
        }
    });
  });
});

Когда я захожу на страницу и нажимаю кнопку, она говорит мне, что «the_ajax_script» не определен.

Хотя я зарегистрировал его в файле функций. php:

<?php

add_action( 'wp_enqueue_scripts', 'enqueue_scripts' );

function enqueue_scripts() {
    // css
    wp_enqueue_style('parent-style', get_template_directory_uri().'/style.css');

    $handle = 'doc_script_handle';
    wp_enqueue_script( $handle, get_stylesheet_directory_uri() . '/js/docs.js', array('jquery'));
    wp_localize_script($handle, 'the_ajax_script', array('ajaxurl' =>admin_url('admin-ajax.php')));
}

//*********** getDOCS ***************//

add_action( 'wp_ajax_get_docs_from_id', 'getDocsFromCode' );
add_action( 'wp_ajax_nopriv_get_docs_from_id', 'getDocsFromCode' );
function getDocsFromCode() {
     ///un-needed code.......
}
?>

Исходя из angular фона, это не имеет смысла для меня. почему не работает? Также дополнительный вопрос: почему я должен импортировать jquery сам и указать его в части wp_enqueue_script?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...