Intereting Posts
Активный класс в боковом меню WP не подчиняется отключению функции пересмотра сообщений API REST: переменные заголовка отправки / получения Повторное создание базы данных WordPress Установка WordPress самостоятельно удаляется при перезагрузке сервера. Таблицы SQL тоже ушли! Отображение общего обзора автора Вывод автора и описание, если описание не пустое Изменения темы ребенка не отражают в родительской теме Что нужно передать для $ required_dirs при вызове _unzip_file_pclzip (aka PclZip)? Ошибка синтаксиса, неожиданный «класс» (T_CLASS) в строке 1 после обновления до php 5.6.4 Не удается упорядочить результат запроса как заданный массив идентификаторов сообщений Обновления CSS появляются после задержки Почему социальные значки исчезнут после добавления настраиваемого типа сообщений? Как разрешить определенные расширения и размер файла для вложения wp_mail? Загрузите страницу шаблона на основе части slug в wordpress

Где вызывать wp_insert_user () и wp_insert_post ()?

Я пытаюсь выполнить пакетную вставку нескольких пользователей и сообщений, используя функции wp_insert_user () и wp_insert_post (). Проблема в том, что я не могу найти четких инструкций относительно того, откуда я должен обращаться от этих функций. Все говорит о «крючках», но я не хочу ничего перехватывать; Я хочу иметь возможность, например, посетить определенный URL-адрес в веб-браузере и импортировать его. Должен ли я помещать вызовы в специальный файл темы? В корневом каталоге моей установки WordPress? Как я могу вызвать вызов функции в правильном контексте?

Solutions Collecting From Web of "Где вызывать wp_insert_user () и wp_insert_post ()?"

Я не знаю, почему вы хотели бы исключить крючки как возможное решение, потому что я все еще думаю, что это лучший вариант

ВАРИАНТ 1 – без крючков

Чтобы сделать эту работу, конкретный URL-адрес, который вы хотите использовать, должен существовать и не должен возвращать значение 404. Я, вероятно, считаю, что ваш лучший вариант здесь – создать частную страницу и добавить свой код непосредственно в указанный шаблон, который будет использоваться для этого стр. Когда вы заходите на эту страницу, ваш код будет выполнен.

ИМХО, это действительно плохое решение, хотя

ВАРИАНТ 2 – Использование крючков

На мой взгляд, это будет лучший вариант

ВАРИАНТ 2.1

Добавьте свой код в плагин и подключите свой код к hook_ register_activation_hook . Это гарантирует, что при активации плагина ваш код будет запущен, а не после этого снова на каждой загрузке страницы после этого

ВАРИАНТ 2.2

Добавьте свой код в свою тему и after_theme_switch его к крюку after_theme_switch . Это будет работать, как только вы активируете свою тему.

ВАРИАНТ 2.3

С помощью условных тегов вы можете специально настроить таргетинг на определенную страницу и затем перехватить свою функцию, чтобы выполнить свой код при посещении этого конкретного URL-адреса. Вы можете использовать wp hook здесь, так как к моменту выполнения wp устанавливаются условные теги. Вы также можете использовать hook_redirect, который является предпочтительным для многих.

Между этими тремя вариантами они являются лучшим путем для ИМХО.

ВАЖНАЯ ЗАМЕТКА:

Вы должны создать свою систему таким образом, чтобы, если вы случайно или сознательно запустили код дважды, он ничего не сделал бы во втором запуске. Вероятно, лучшим вариантом было бы сохранить что-то в параметрах, а затем проверить конкретное значение перед выполнением кода.

ПРИМЕР:

 add_action( 'wp', function () // Can also use template_redirect as $tag { // Make sure we target a specific page, if not our page, bail if ( !is_page( 'my selected page' ) ) // Use any conditional tag here to your specific needs return; // Chech if our custom option exist with a specific value, if yes, bail if ( true == get_option( 'my_custom_option' ) ) return; /** * This is where you should do all your work as we are on the selected page * and our option does not exist with our prefered value. Just a few notes here * which you should consider * - Before inserting users, make sure that the user does not exist yet * - Before inserting posts make sure as to not duplicate posts */ // Run all your code here to insert posts and users /** * Create and update our option with the value of `true`. * This will ensure that our code will be executed once */ update_option( 'my_custom_option', 'true' ); });