2016-02-10 8 views
0

Это мой первый пост в этом отличном сообществе. Обычно я нахожу ответы на свои маленькие и большие проблемы, но это, к сожалению, для меня загадка :(Автоматизированный товарный товар woocommerce

Мне нужно создать какую-то автоматическую функцию, которую каждый день, раз в день выбирает 3 и на следующий день удаляет эти 3 и выбирает 3 новых один раз.

К сожалению из-за сложности задания (для моего) у меня нет кода для показа/начала с .

Единственное, что я могу найти в том, что она должна быть определена в некоторой метаинформации:

$args = array( 
    'post_type' => 'product', 
    'meta_key' => '_featured', 
    'meta_value' => 'yes', 
) 

Искренне надеюсь, что кто-то может мне помочь :)

+0

В чем проблема? Автоматизация функции? Или алгоритм для поиска 3 случайных, но новых элементов? – Marc

+0

@ Маркс, немного печально. Я думаю, что «установка 3 случайных новых продуктов» является основной проблемой, настройка времени, возможно, не такая сложная? :) –

+0

Как насчет нового столбца 'last_time_featured' в вашей таблице продуктов. Каждый раз, когда вы его показываете, установите метку времени в 'now'. Затем на следующий день выберите 3 элемента с минимальной меткой 'last_time_featured' (ни одна метка времени, пока еще не показанная, должна быть самой низкой). Это очень абстрактно, так как я ничего не знаю о woocommerce. – Marc

ответ

0

Я думаю, что самым простым решением было бы использовать transients.

Вот предложение, но сначала пара предостережений.

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

  2. у вас нет точного контроля, когда переходный процесс очищается ... ex: каждый день в 3 часа дня.

  3. Это предложение требует от вас переработать, как ваша тема отображает эти 3 признанных продукта. так как мы фактически не ищем _featured meta.

код functions.php:

function so_35312355_get_daily_featured_products(){ 

    // Get any existing copy of our transient data 
    if (false === ($daily_featured_products = get_transient('daily_featured_products'))) { 
     // It wasn't there, so regenerate the data and save the transient 

     $args = array(
      'post_type' => 'product', 
      'post_status' => 'publish', 
      'orderby'  => 'rand', 
      'posts_per_page' => '3', 

     ); 

     $daily_featured_products = new WP_Query($args); 

     set_transient('daily_featured_products', $daily_featured_products, 24 * HOUR_IN_SECONDS); 
    } 

    return $daily_featured_products; 

} 

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

Более совершенный и полный метод будет использовать задания cron. Взгляните в Codex как на schedule an event, но в зависимости от ваших потребностей достаточно временного может.