Intereting Posts
Прямая ссылка пользователя Ограничение страниц на основе иерархии и роли пользователя Сообщения, не показывающие Открыть пост редактора во всплывающем окне Различные URL-адреса в канонических ссылках с YOAST Seo для сообщений и страниц Как получить родителей пользовательской таксономии, как это делает get_category_parents ()? Автоматически создавать столбцы / страницы из найденного элемента базы данных? Ребенок метод woocommerce для предварительного просмотра электронной почты для заказа, avilable hook Как читать длину выдержки (для if-condition) Разделить короткие коды на массив коротких кодов Хорошая рекомендация книги по разработке темы WordPress jQuery и AJAX Не работает с элементом Select Form Я не могу получить tax_query в get_posts () для работы с пользовательской таксономией Страница корзины отображает цену и сумму как ноль, независимо от введенной цены

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

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

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

ВАРИАНТ 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' ); });