Есть Ajax запрос на WP
javascript
$('input[name="author"]').blur(function(e) {
$('#result').text('');
action = 'ajax_seach',
param = $('input[name="author"]').val();
$.ajax({
url: php_array.admin_ajax,
type:'POST',
data: ({
'action': action,
'nonce' : php_array.nonce,
'var': param,
}),
beforeSend: function () {
},
success: function (data, textStatus, jqXHR) {
$('#result').append('');
console.log(data);
$( '#container_for_post' ).html('');
$('#myModal').modal('show');
$( '#container_for_post' ).append( data );
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR + " :: " + textStatus + " :: " + errorThrown);
}
});
});
код срабатывает на поле формы
и есть php часть
function ajax_seach_super () {
$nonce = $_POST['nonce'];
if ( !wp_verify_nonce( $nonce, 'myajax-nonce' ) )
die ( 'Fuck!!!!!');
$name = (isset($_REQUEST['var'])) ? $_REQUEST['var'] : 'something_if_not';
$query = new WP_Query('page_id=337');
while ( $query->have_posts() ) {
$query->the_post();
the_title(); // выведем заголовок поста
}
?>
<h1><?php echo 'Привет '.$name; ?></h1>
<?php
wp_die();
}
add_action('wp_ajax_ajax_seach', 'ajax_seach_super');
add_action('wp_ajax_nopriv_ajax_seach', 'ajax_seach_super');
перед ним есть код типа
/** Register Scripts. */
add_action('wp_enqueue_scripts', 'theme_register_scripts', 1);
function theme_register_scripts() {
/** Register JavaScript Functions File */
wp_register_script('functions-js', esc_url(trailingslashit(get_template_directory_uri()) . 'functions.js'), array('jquery'), '1.0', true);
/** Localize Scripts */
$php_array = array(
'admin_ajax' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('myajax-nonce'),
);
wp_localize_script('functions-js', 'php_array', $php_array);
}
/** Enqueue Scripts. */
add_action('wp_enqueue_scripts', 'theme_enqueue_scripts');
function theme_enqueue_scripts() {
/** Enqueue JavaScript Functions File */
wp_enqueue_script('functions-js');
}
/** Ajax Post */
add_action('wp_ajax_theme_post_example', 'theme_post_example_init');
add_action('wp_ajax_nopriv_theme_post_example', 'theme_post_example_init');
function theme_post_example_init() {
/** Made Query */
$args = array('p' => $_POST['id']);
$theme_post_query = new WP_Query($args);
while ($theme_post_query->have_posts()): $theme_post_query->the_post();
?>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel"><?php the_title();?></h4>
</div>
<div class="modal-body" >
<?php the_content();?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<a href="<?php the_permalink();?> " type="button" class="btn btn-primary">Читать полностью</a>
</div>
<?php
endwhile;
exit;
}
После того как срабатывает форма, отправляется ajax запрос, проходит nonce, получает передаваемый параметр, а от функции WP абсолютно не работают. Кода я получаю ответ, то передаваемый мною параметр выводится, а от все остальное нет и ВСЕГДА в конце стоит "0". Убирается он когда в конце пишу стоку wp_die()
Также в кодексе нашел строки типа
If the Ajax request fails in wp-admin/admin-ajax.php, the response will be -1 or 0, depending on the reason for the failure. Additionally, if the request succeeds, but the Ajax action does not match a WordPress hook defined with add_action('wp_ajax_(action)', ...) or add_action('wp_ajax_nopriv_(action)', ...), then admin-ajax.php will respond 0.
но не описывается когда 0 а когда -1 и как это толком решить.
Есть ли решения данной проблемы?