2014-01-12 2 views
10

Я пытаюсь изменить шаблон короткого описания на разные (отдельные) страницы продукта, чем на простые продукты. код на той же странице здесь:Woocommerce - как узнать, имеет ли товар сообщение изменения или нет

global $post; 

if (! $post->post_excerpt) return; 
?> 
<div itemprop="description"> 
    <?php echo apply_filters('woocommerce_short_description', $post->post_excerpt) ?> 
</div> 

Я хочу добавить некоторый код, если заявление, что будет что-то вроде

if post has variations, don't display short description, if simple product DO display 

, но я не могу найти способ в коде, чтобы отличить между регулярным простым товарным сообщением и переменным (имеет вариации). И просматривая документы API на сайте Woo (http://docs.woothemes.com/wc-apidocs/), я ничего не нашел.

ответ

20

После долгого душевного, я нашел следующие два решения:

В цикле продукта, вы можете использовать это:

if($product->has_child()) { 

, но по какой-то причине в кратком описании на одной странице , я должен был использовать это:

global $post; 
$children = get_pages('child_of='.$post->ID); 
if(count($children) !== 0) { 

Надеется, что это помогает другим, которые изо все силы, как я был ...

+0

Большое спасибо! Это помогло мне обмануть Fatal error :) –

+1

На самом деле, я выяснил, как заставить тег has_child работать на странице одного продукта, мне нужно было добавить специальный глобальный: 'global $ post, $ product, $ woocommerce_loop; if ($ product-> has_child()) {' – Stephen

+0

Спасибо за ваше решение, это тоже помогло мне. – Ivandude

28

Используйте функцию $product->is_type(), чтобы проверить тип продукта. Для того, чтобы проверить, если продукт является переменным использование продукта:

global $product; 

// $product->is_type($type) checks the product type, string/array $type ('simple', 'grouped', 'variable', 'external'), returns boolean 

if ($product->is_type('variable')) {} 

Существует также $product->get_type() функции, которая возвращает внутренний тип продукта в виде строки.

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