Wordpress REST API пользовательский тип записи УДАЛИТЬ доступ запрещен - PullRequest
0 голосов
/ 28 июня 2018

У меня следующая проблема в Wordpress.

Я создал новый пользовательский тип записи под названием "coursenote". Я использую REST API для вызовов Ajax (используя jQuery). Создание новых сообщений и обновление сообщений работает нормально, но удаление не работает.

Определение моего пользовательского типа сообщения:

register_post_type( 'coursenote',
    [
        'labels'       => [
            'name'          => __( 'User notes' ),
            'singular_name' => __( 'User note' ),
        ],
        'public'       => false,
        'show_in_menu' => true,
        'show_ui' => true,
        'show_in_rest' => true,
        'rest_base'    => 'usernote',
        'has_archive'  => false,
        'supports'     => array(
            'page-attributes',
            'title',
            'editor',
            'author',
        ),
    ]
);

REST URL для пользовательского типа записи: " http: //.../usernote". Я могу читать, публиковать и обновлять, но не могу удалить сообщение. Удаление должно работать методом DELETE на http: //.../usernote/ [id] / (см. Документация Wordpress ), но я получаю 403 запрещено сообщение.

Это код jQuery Ajax:

ajaxRequestUserNotes = jQuery.ajax({
    method: 'DELETE',
    url: "http://.../usernote/" + id + '?force=true',
    beforeSend: function (xhr) {
        xhr.setRequestHeader('X-WP-Nonce', nonce);
    },
    success: function (result) {
        console.log(result);
    }
});

Как видите, заголовок аутентификации также установлен (например, он работает с новыми сообщениями и обновляет сообщения).

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 28 июня 2018

Я нашел проблему. Это был неправильно настроенный сервер Apache.

error.log показал следующую ошибку:

[authz_core:error] [pid 13102] [client ::1:44796] AH01630: client denied by server configuration:

Итак, я проверил конфигурацию сервера и нашел следующий блок в конфигурации Apache:

<Limit GET POST OPTIONS>
        Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
        Require all denied
</LimitExcept>

Как видите, «УДАЛИТЬ» отсутствует. Вы должны добавить это так:

<Limit GET POST OPTIONS DELETE>
        Require all granted
</Limit>
<LimitExcept GET POST OPTIONS DELETE>
        Require all denied
</LimitExcept>

Надеюсь, это поможет другим людям.

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