Как создать собственную конечную точку REST API для публикации сообщений с определенными постоянными ссылками в WordPresPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как создать собственную конечную точку REST API для публикации сообщений с определенными постоянными ссылками в WordPres

Сообщение Anonymous »

Я новичок в PHP и работаю над проектом WordPress, где мне нужно создать собственную конечную точку REST API, которая позволит публиковать сообщения с определенными постоянными ссылками. Вот чего я пытаюсь достичь:
  • Создайте новую конечную точку REST API, что-то вроде /wp-json/custom/post
    Эта конечная точка должна принимать запросы POST со следующими параметрами:
    • : заголовок публикации
    • : содержание публикации
    • Код: Выделить всё

      custom_permalink
      : конкретная постоянная ссылка, которую я хочу использовать для этого сообщения.
  • Конечная точка должна создать новое сообщение с предоставленный заголовок и содержимое и установите его постоянную ссылку на указанную пользовательскую постоянную ссылку.
  • Он должен вернуть сообщение об успехе с идентификатором сообщения, если создание прошло успешно, или сообщение об ошибке, если оно не удалось< /li>
Основная причина, по которой мне нужно это специальное решение, заключается в том, что стандартный параметр slug в WordPress REST API не поддерживает косую черту () и автоматически преобразует их в дефисы (

Код: Выделить всё

-). Например:
[list]
Если я установлю для slug
значение ndd/test/test2, WordPress преобразует его в ndd/test-test2< /code>
[*]На самом деле я хочу сохранить структуру как ndd/test/test2
[/list]
Я не понимаю, почему это невозможно в WordPress для публикаций, поэтому я ищу собственное решение.
Я пробовал использовать Register_rest_route() для создания конечной точки, но я не уверен, как правильно настроить правила перезаписи, чтобы разрешить использование этих пользовательских постоянных ссылок.
Вот базовая структура, которую я начал с:

Код: Выделить всё

add_action('rest_api_init', function () {
register_rest_route('custom/v1', '/post', array(
'methods' => 'POST',
'callback' => 'create_custom_post_callback',
'permission_callback' => function() {
return current_user_can('publish_posts');
}
));
});

function create_custom_post_callback($request) {
$title = $request->get_param('title');
$content = $request->get_param('content');
$custom_permalink = $request->get_param('custom_permalink');

// Create post
$post_id = wp_insert_post(array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
));

if (is_wp_error($post_id)) {
return new WP_Error('failed-to-create', 'Failed to create post', array('status' => 500));
}

// How do I set the custom permalink here?
// What rewrite rules do I need to modify?

return new WP_REST_Response(array('post_id' => $post_id), 200);
}
Мои основные вопросы:
  • Какие правила перезаписи мне нужно изменить, чтобы разрешить использование этих пользовательских постоянных ссылок с несколькими уровни (например, ndd/test/test2)?
  • Как установить пользовательскую постоянную ссылку для вновь созданного сообщения в функции обратного вызова, сохранив желаемую структуру?
    Есть ли какие-либо соображения безопасности, которые мне следует учитывать при реализации этого, особенно учитывая возможность создания произвольных структур URL-адресов?
  • Есть ли способ добиться это использует встроенную функциональность WordPress, которую я, возможно, упустил из виду?
Заранее благодарим вас за помощь!

Подробнее здесь: https://stackoverflow.com/questions/790 ... cific-perm
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»