Wordpress: запланированное изменение категории (рабочий процесс). Как сделать? - PullRequest
1 голос
/ 07 ноября 2011

Я думаю, что это обычный случай: у меня есть три категории: Прошлое, Текущее, Предстоящее.

Теперь я пишу сообщение о событии следующего месяца.Я поместил этот пост в категорию «Предстоящие».

Мне нужно запланированное изменение категории.

, т. Е.

Это событие длится с 1 по 10 декабря.30 ноября, эта публикация находится в следующей категории (я выбираю эту категорию при создании этой записи).

1 декабря эта публикация будет автоматически находиться в текущей категории до 10 декабря.

Вкл.11 декабря этот пост будет автоматически добавлен в категорию «Прошлые».

Я выполнил поиск и не нашел такого плагина.

По сути, я хочу, чтобы на странице публикации были две дополнительные опции:

Опция 1: изменить категорию _ на _

Опция 2: изменить категорию _ на _

Звучиткак вопрос рабочего процесса.Я искал плагин, связанный с рабочим процессом, но все еще безуспешно.

Есть предложения о том, как это реализовать?Я могу написать плагин, но я новичок в WP.Кто-нибудь может предложить мне, какой API / функции использовать?

Спасибо!

1 Ответ

1 голос
/ 08 ноября 2011

Прежде всего: там может быть плагин, который может обрабатывать то, что вы хотите достичь.Если вам нужен простой календарь событий, я почти уверен, что это можно сделать с помощью существующих плагинов.Наверху, MyCalendar будет одним из таких плагинов.Возможно, вы захотите поискать в каталоге плагинов wordpress дополнительные опции, прежде чем погрузиться в кодирование этого самостоятельно.

При этом, если вы не можете избежать создания этого самостоятельно, потому чтоесли вы специализирующийся, это должно помочь вам начать:

Либо используйте настраиваемые поля , чтобы добавить дополнительные метаданные даты начала и окончания, либо сделать события Пользовательские сообщения типа свои.Объяснение использования пользовательских типов записей в деталях выходит за рамки краткого SO-ответа.

Если вы выберете более простой способ добавления двух настраиваемых полей с именами start и end (или тому подобное), вам нужно будет либо запустить скрипт php как cronjob через ваш сервер, либо настроить нас на Функции WP-Cron , чтобы сравнить текущее время с датой начала и окончанияи соответственно измените категорию.

Чтобы предоставить вам некоторый полезный код (который будет использоваться в вашем плагине), следующий фрагмент php должен указать вам правильное направление:

register_activation_hook(__FILE__, 'your_activation');
add_action('your_daily_event', 'change_categories');

function your_activation() {
    $first_time = time(); // you probably want this to be shortly after midnight
    $recurrence = 'daily';
    wp_schedule_event($first_time, $recurrence, 'your_daily_event');
}

function change_categories() {
    $old_name = 'Upcoming'; // category to delete
    $taxonomy = 'category';
    // fetch category ID (amongst other data) of 'Upcoming':
    $term = get_term_by('name',$old_name, $taxonomy);
    // fetch all posts in 'Upcoming' category:
    $objects = get_objects_in_term($term->term_id,$taxonomy);
    // the $objects array now contains the post IDs of all upcoming events

    // now, let's loop through them to manipulate:
    foreach($objects as $object) {
         // get start date:
         $key = 'start'; // the name of the custom field
         $start = get_post_meta($object, $key, true); // start date
         $todays_date = date('Y-m-d'); // get current date
         // Assuming, your dates in the custom fields are formatted YYYY-MM-DD:
         if ($start < $todays_date) {
             // change category:
             $new_name = 'Current';
             wp_set_post_terms( $object, $new_name, $taxonomy, false );
         }
    }

?>

Несколько примечаний:

  • Вышеприведенное, очевидно, должно быть изменено для перехода с «Текущего» на «Прошлое».
  • Его можно легко адаптировать для включения времени какхорошо.
  • cronjobs должен запускаться вскоре после полуночи
  • $first_time должен быть UNIX timestamp
  • Проверить справку по функции wordpress для получения дополнительной информацииn на функциях wp, используемых выше
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...