Intereting Posts
Экран пользовательского входа – отключить восстановление пароля Активация дочерней темы возвращает «активная тема нарушена» Как добавить логотип на свой сайт? Как я могу разделить результат запроса на 2 массива? Получать сообщения в закладках фундамента и вкладках, разделенных на 3 строки Получить URL эскиза сообщения или отобразить изображение по умолчанию в коротком коде Показать сообщение, соавторство на странице автора Редактирование навигационного меню? Есть ли лучший способ делать заголовки для (всех) архивов? Перевести навигационное меню и названия виджета боковой панели как использовать новый размер изображения Почему публикация get_post_status публикуется, когда вложение находится в корзине? Как добавить скрытые настраиваемые поля из wp-admin / post.php? Почему на странице «Сообщения» отображается только одно сообщение при использовании Thematic? Категория WordPress и цикл таксономии с разбивкой на страницы

Как создать API JSON на основе REST (как изменить код ниже)?

if(isset($_GET['api']) ) { if ($_GET['api'] == 'json'){ $args = array( 'post_type' => 'post' ); $query = new WP_Query( $args ); // $query is the WP_Query Object $posts = $query->get_posts(); // $posts contains the post objects foreach( $posts as $post ) { // Pluck the id and title attributes $output[] = array( 'id' => $post->ID, 'title' => $post->post_title, 'content' => $post ->post_content, 'imageurl' => wp_get_attachment_url( get_post_thumbnail_id($post->ID) ) ); } header("content-type: application/json"); echo json_encode( $output ); } exit(); } } 

Вот что я получаю в результате:

 [ { "id": 95, "title": "See you next year!", "content": "Lorem ipsum", "imageurl": "http://localhost/....(random url)dsad.jpg" }, { "id": 19, "title": "Early bird tickets", "content": "that is good", "imageurl": http://localhost/....(random url)dsada.jpg" } ] 

Как я могу изменить его, чтобы я мог получить доступ только к ID или Title, но не ко всем?

Solutions Collecting From Web of "Как создать API JSON на основе REST (как изменить код ниже)?"

попробуй это:

 if (isset($_GET['api'])) { if ($_GET['api'] == 'json' && isset($_GET['id'])) { $args = array( 'p' => $_GET['id'], 'post_type' => 'any'// ID of a page, post, or custom type ); $query = new WP_Query($args); // $query is the WP_Query Object $post = $query->post; // $post contains the post object header("content-type: application/json"); echo json_encode($post); } exit(); } 

get post будет получать одно сообщение, он возвращает массив, чтобы он мог перейти непосредственно в json_encode, вам нужно будет добавить URL-адрес «id = XX», где X – число.

Если у вас есть последняя версия wordpress, я рекомендую вам использовать встроенный api WP REST Api