Я пытаюсь обновить заголовок отдельного сообщения WordPress через admin-ajax.php.Все отлично работает, когда я загружаю напрямую http://mysite.url//wp-admin/admin-ajax.php?action=myactionname *, но когда я пытаюсь загрузить его из внешнего интерфейса (один пост), переменные отправляются неправильно.
IЯ использую Wordpress 5, Php 7.2, Nginx
Внутренний плагин:
class AjaxUpdate {
public $postid;
public $new_title;
public function __construct($postid, $new_title) {
$this->postid = $postid;
$this->new_title = $new_title;
add_action('wp_ajax_myactionname', array( $this, 'do_updatepost'));
add_action('wp_ajax_nopriv_myactionname', array( $this, 'do_updatepost'));
add_action( 'wp_enqueue_scripts', array( $this, 'ajax_update_script'));
}
public function do_updatepost() {
echo 'It Work Updatepost';
$post_update = array(
'ID' => $this->postid,
'post_title' => $this->new_title,
);
wp_update_post( $post_update, $wp_error );
wp_die();
}
public function ajax_update_script() {
wp_enqueue_script('ajaxpost', plugins_url('plugname/scripts/ajaxpost.js'), array('jquery'));
wp_localize_script('ajaxpost', 'plugname', array(
'ajaxurl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('nonce-for-plugname'),
));
}
}
внутри страницы шаблона одного сообщения:
$wpajaxupdate = new AjaxUpdate($postid, $new_title);
jQuery(document).ready(function ($) {
var data = {
action: 'myactionname',
nonce: plugname.nonce,
};
jQuery.post(plugname.ajaxurl, data, function (response) {
alert('Worked: ' + response + JSON.stringify(data));
});
});
Если я используюэтот код внутри плагина, установите переменные и загрузите http://mysite.url//wp-admin/admin-ajax.php?action=myactionname все работает нормально:
$wpajaxupdate = new AjaxUpdate($postid, $new_title);
Что я делаю не так?Как правильно обновить заголовок wp-сообщения через ajax?