Как передать переменные в admin-ajax.php во внешнем интерфейсе Wordpress - PullRequest
1 голос
/ 07 июля 2019

Я пытаюсь обновить заголовок отдельного сообщения 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?

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