Ajax-вызов из внешнего интерфейса не работает с WordPress

Вызов Ajax не работает с внешнего интерфейса в WordPress. Все, что я хочу получить от базы данных на основе идентификатора, это то, что я пробовал до сих пор.

//Frontend view

<a href="javascript:void(0)" onclick="getDetails(<?=$index;?>)" >
<?php echo $value ?>
</a>

//Functions.php

function my_enqueue() {
wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/assets/js/ajax-script.js', array('jquery') );
wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}

add_action( 'wp_enqueue_scripts', 'my_enqueue' );
add_action('wp_ajax_nopriv_more_posts', 'get_more_posts');

function get_more_posts(){
// How to get id here to query for the database
echo "Hello World";
exit();
}

// Ajax scripts File
function getDetails(id)
{
jQuery.ajax({
url: more_posts.ajax_url,
type: "GET",
data: {
action: 'more_posts'
},
dataType: "html",
success: function(response){
alert(response);
}
});
}

Я получаю эту ошибку

ошибка ссылки more_posts не определена

2

Решение

//Frontend view

<a href="javascript:void(0)" onclick="getDetails(<?=$index;?>)" >
<?php echo $value ?>
</a>

//Functions.php

function my_enqueue() {
wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/assets/js/ajax-script.js', array('jquery') );
wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}

add_action( 'wp_enqueue_scripts', 'my_enqueue' );
add_action('wp_ajax_nopriv_more_posts', 'get_more_posts');

function get_more_posts(){
// How to get id here to query for the database
echo "Hello World";
echo $_GET['id'];
exit();
}

// Ajax scripts File
function getDetails(id)
{
var id = id;
jQuery.ajax({
url:  url: my_ajax_object.ajax_url,
type: "GET",
data: {
action: 'get_more_posts',
id: id,
},
dataType: "html",
success: function(response){
alert(response);
}
});
}

Это должно работать! Вам не нужен абсолютный путь или переменная с ‘href», url: my_ajax_object.ajax_url, достаточно, как вы уже добавили admin-ajax.php с wp_enqueue_script, Спасибо

2

Другие решения

Вы ошиблись в

  url: more_posts.ajax_url

Потому что вы локализуете имя скрипта my_ajax_object

 wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );

попробуй это

 url: my_ajax_object.ajax_url
1

По вопросам рекламы [email protected]