Как можно исправить скрипт, чтобы при отложенной активации два раза в день корректно закидывались кастомные типы записей с таксономиями, в то время как при немедленной активации все работает как задумано?
Возможно, проблема заключается в том, что вы пытаетесь добавить таксономии до того, как тип записи был создан. В таком случае, функция wp_insert_post не находит соответствующий тип записи и не может добавить таксономии к нему. Для исправления этой проблемы вам нужно добавить условие, которое будет проверять, был ли создан тип записи перед добавлением таксономий. Например: ```php // Проверяем, был ли тип записи создан if ( post_type_exists( 'custom_post_type' ) ) { // Создаем новую запись $post_id = wp_insert_post( $post_data ); // Если запись была успешно создана, добавляем к ней таксономии if ( $post_id ) { wp_set_object_terms( $post_id, 'taxonomy_term', 'taxonomy_name' ); } } ``` Этот код сначала проверяет существование типа записи `custom_post_type`, и только если он существует, создает новую запись и добавляет к ней таксономии. Чтобы сделать установку дважды в день при отложенной активации, вам нужно использовать функцию `wp_schedule_event`, чтобы добавить расписание для выполнения вашего скрипта. Например: ```php // Устанавливаем расписание для выполнения дважды в день add_action( 'wp', 'my_schedule_custom_post_creation' ); function my_schedule_custom_post_creation() { if ( ! wp_next_scheduled( 'my_custom_post_creation_event' ) ) { wp_schedule_event( time(), 'twicedaily', 'my_custom_post_creation_event' ); } } // Действие, которое будет выполняться при срабатывании расписания add_action( 'my_custom_post_creation_event', 'my_custom_post_creation_function' ); function my_custom_post_creation_function() { // Ваш код для создания и добавления таксономий к кастомным типам записей } ``` Таким образом, скрипт будет добавлять кастомные типы записей с таксономиями два раза в день при отложенной активации.
Привет!
Твоя проблема с добавлением таксономий через `tax_input` при использовании функции `wp_insert_post` в запланированных задачах может быть связана с различиями в правах пользователя, которые действуют при выполнении функций по расписанию и при активации по кнопке.
По умолчанию, функция `wp_insert_post` не устанавливает таксономии, если она выполняется от пользователя, у которого нет прав на редактирование этих таксономий. Когда ты выполняешь добавление поста по кнопке, скорее всего, ты залогинен как администратор или другой пользователь с достаточными правами. Однако, когда операция выполняется в фоновом режиме по расписанию, она может запускаться от имени пользователя, у которого нет необходимых прав.
Чтобы решить эту проблему, можно попробовать следующие шаги:
1. Использование хуков: Перед вызовом `wp_insert_post`, применяй хук `wp_set_current_user` для временной смены текущего пользователя на администратора:
php wp_set_current_user(1); // 1 - это обычно ID администратора $post_ID = wp_insert_post($post_data);
Это позволит выполнять добавление постов с таксономиями с правами администратора, независимо от контекста вызова функции.
2. Добавление таксономий после создания поста: Иногда более надёжным решением может быть отдельное добавление таксономий после создания поста с помощью функции `wp_set_object_terms`:
php wp_set_object_terms($post_ID, $departmentsTags, 'department'); wp_set_object_terms($post_ID, $officesTags, 'location');
Этот метод также гарантирует, что таксономии будут добавлены независимо от прав текущего пользователя.
3. Проверка прав: Удостоверься, что задачи по расписанию запускаются с правами пользователя, который имеет возможность редактировать посты и таксономии.
Попробуй эти решения, и, надеюсь, одно из них поможет тебе решить проблему с добавлением таксономий в отложенных задачах. Удачи!