Ответы пользователя по тегу WordPress
  • Обновляю посты по расписанию. Через wp_insert_post, но не добавляются таксономии в tax_input, почему?

    @techkiller
    Привет!
    Твоя проблема с добавлением таксономий через `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. Проверка прав: Удостоверься, что задачи по расписанию запускаются с правами пользователя, который имеет возможность редактировать посты и таксономии.

    Попробуй эти решения, и, надеюсь, одно из них поможет тебе решить проблему с добавлением таксономий в отложенных задачах. Удачи!
    Ответ написан
    1 комментарий