2016-03-29 4 views
1

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

  • отображения подсчитывать мой пользовательский продукт только на продуктах в конкретном категория продукта
  • также отображать подсчитывать продукт только на конкретной странице пользовательских WP (который я использовал product_category шорткод)

Мой код в functions.php выглядит следующим образом, и он добавляет значение $top50_counter до го e product thumbnail, но он делает это на сайте, поэтому мне нужно сузить его в соответствии с моими пунктами выше.

/* ADD NUMBERING TO TOP 50 LIST PRODUCTS */ 
add_action('woocommerce_before_shop_loop_item_title', 'custom_before_shop_loop_item', 5); 
$top50_counter=1; 
function custom_before_shop_loop_item() { 
    global $top50_counter; 

    echo '<h1>'.$top50_counter.'</h1>'; 
    $top50_counter++; 
} 

Я предполагаю, что я должен использовать функцию $terms = get_the_terms там каким-то образом?

ответ

2

Вы должны использовать условные обозначения is_page и has_term. Попробуйте перефакторировать код следующим образом.

/* ADD NUMBERING TO TOP 50 LIST PRODUCTS */ 
add_action('woocommerce_before_shop_loop_item_title', 'custom_before_shop_loop_item', 5); 

$top50_counter=1; 

function custom_before_shop_loop_item() { 

    global $top50_counter; 

    /* Replace 42 with the actual page ID and "your-category" with the actual category slug */ 

    if((is_page(42)) || (has_term('your-category' , 'product_cat'))): 
     echo '<h1>'.$top50_counter.'</h1>'; 
     $top50_counter++; 

    endif; 
} 

P.S: непроверенный код.

+0

Ананд. Единственная логическая проблема, которую я обнаружил в вашем коде, где находится IF, логический ИЛИ должен быть логическим ИЛИ, && ', потому что если это OR, он активирует код нумерации на других страницах. Я буду отмечать ваш ответ как принятый. Спасибо, высоко оценил, и сегодня я чему-то научился. – Mario

+0

Я рад, что смогу помочь. Я изначально использовал' && ', но после повторного чтения ваш вопрос немного запутался и изменил его на логическое ИЛИ, см. мой edi t :) –

0

Попробуйте это. Используйте соответствующее название категории и пользовательский slp-файл в следующей функции.

function custom_before_shop_loop_item(){ 
    global $post, $term, $top50_counter; 
    $id = $post->ID; 
    $taxonomy = 'product_cat'; 
    $terms = get_the_terms($id, $taxonomy); 
    if(($terms[0]->name == 'Category Name') || ($post->post_name == 'custom-wp-page-slug')){ 
     echo '<h1>'.$top50_counter.'</h1>'; 
    } 
    $top50_counter++; 
} 

Надеюсь, что это поможет.

+0

В случае успеха 'get_the_terms' вернет массив, поэтому' $ terms-> name' не будет работать. Исправьте свой код, чтобы запустить проверку 'if' в цикле' foreach ($ terms as $ term) {if ($ term-> name == 'Category Name' ..... 'Также' $ top50_counter ++ 'должен быть внутри условия 'if', только увеличивайте его, когда продукт имеет определенную категорию. –

+0

Спасибо, ребята, со всеми вариантами решения проблемы, это имеет больше смысла для меня, и я чему-то научился. ответьте как принято, хотя я уверен, что ваш код тоже будет работать. Оценка: – Mario

 Смежные вопросы

  • Нет связанных вопросов^_^