victorzadorozhnyy
@victorzadorozhnyy

В чем ошибка зарегистрации скрипта в wp и как передать ему переменные с php?

у меня есть wp плагин для которого в админке создаю сраничку и там хочу повесить для кнопки функцию и передать ей переменные
функция срабатывает но переменные из MyAjax не получается использовать.
вот главный php
require_once(ABSPATH .'wp-includes/pluggable.php');
require_once(ABSPATH .'wp-load.php');


add_action('admin_menu', 'setup_menu');

function setup_menu(){
    require_once plugin_dir_path( __FILE__ ) . '/admin.php';
    add_menu_page( 'IMG', 'IMG', 'manage_options', 'img-plugin', 'run_this' );
}

include ("get_all_img.php");

/* Script registration*/
wp_enqueue_script( 'img_import.js', plugins_url( '/img_import.js', __FILE__ ), array('jquery'), '1.12', true );
wp_localize_script( 'img_import', 'MyAjax', array(
    'ajaxurl' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('myajax-nonce'),
    'pluginsUrl' => plugins_url()
) );

На странице в админке только кнопка
function run_this()
{
    echo '<div id="img_app"></div>';
    echo '<button id="app-img" onclick="myFunction();">Click me!</button>';
}

Вот img_import.js' файл
"use strict";

function myFunction( ) {
    //name, id
    jQuery.post(
        MyAjax.ajaxurl,
        {
            type: "post",
            dataType: "json",
            'action': 'get_all_img_',
            async: true
        }
    ).done(
        function (resp) {
            console.log(resp);
        }
    );
}

выдает ошибку
img_import.js?ver=1.12:24 Uncaught ReferenceError: MyAjax is not defined
at myFunction
at HTMLInputElement.myButton.onclick
  • Вопрос задан
  • 352 просмотра
Решения вопроса 1
@MrTimon
В этом месте
wp_localize_script( 'img_import', 'MyAjax', array(
    'ajaxurl' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('myajax-nonce'),
    'pluginsUrl' => plugins_url()
) );

Попробуйте первый параметр заменить на название скрипта перед которым переменные должны подгрузиться, тоисть img_import.js а не img_import . Получиться как то так
wp_localize_script( 'img_import.js', 'MyAjax', array(
    'ajaxurl' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('myajax-nonce'),
    'pluginsUrl' => plugins_url()
) );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы