Intereting Posts
Как запретить пользователям создавать новые теги, но разрешать им использовать существующие Меню навигации с детьми, отображаемыми только для текущей страницы Вручную добавьте панель администратора JSON API не работает после обновления до версии 4.6 Сетка сетки «последний» класс для каждого третьего элемента Переименовать и изменить порядок настройки Записывание сценария в нижний колонтитул помещает его в самое нижнее Вызов body_class и wp_nav_menu для другого сообщения Как устранить проблему, почему TinyMCE не загружает пользовательские плагины в визуальный редактор? Shortcode: отображение списка созданного короткого кода во всплывающем окне get_terms и meta_value результаты пустые передача переменных внутри виджета add_action Тег заголовка веб-сайта связывает некоторые ресурсы с HTTPS Почему style.css не помещается в очередь? Как перенаправить файл Physical Robots.txt без FTP

Создавайте сообщения WordPress из массива JSON, используя плагин в admin

Я пишу плагин WordPress, который хотел бы сделать следующее:

  1. Добавьте страницу администрирования плагина WordPress, содержащую кнопку
  2. Когда вы нажимаете кнопку, он загружает массив объектов JSON из файла, а затем создает пост WordPress для каждого объекта

Я получил # 1, и я вижу массив объектов JSON, загружаемых при нажатии кнопки, так как я использую console.log . (Я сделал кнопку, используя этот учебник, – использует AJAX.)

Но как я мог бы предоставить WordPress доступ к массиву JSON, чтобы я мог создавать сообщения с помощью wp_insert_posts ? Возможно ли это?

Здесь я предполагаю, что ваш json – это массив объектов, где свойства называются аргументами wp_insert_post : «post_title», «post_content» и т. Д.

 function process_ajax() { if ( ! isset($_POST['nonce']) || ! wp_verify_nonce($_POST['nonce'], 'mynonce') ) die('error on checking nonce'); if ( ! isset($_POST['filepath']) die('no file given'); if ( ! file_exists($_POST['filepath']) ) die('invalid file given'); $posts = json_decode( file_get_contents($_POST['filepath']) ); $done = 0; if ($posts) { foreach ( $posts as $post) { $post = (array)$post; if ( isset($post['ID']) ) unset($post['ID']); if ( wp_insert_post($post) ) $done++; } $str = "Successfully insert " . $done . "posts, "; $str .= ( count($posts) - $done ) . ' failed.' die($str); } else { die('File contains not valid Json.'); } }