web-dev-qa-db-ja.com

Woocommerce-商品の投稿にバリエーションがあるかどうかを確認する方法

簡単な説明テンプレートを編集して、変数(単一)製品ページと単純な製品ページで異なるようにしようとしています。そのページのコードは次のとおりです。

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

Ifステートメントに次のようなコードを追加したい

投稿にバリエーションがある場合、簡単な説明が表示されない場合、単純な製品が表示される場合

しかし、通常の単純な製品の投稿と可変である(バリエーションがある)投稿を区別する方法をコードで見つけることはできません。そして、Wooサイト( http://docs.woothemes.com/wc-apidocs/ )でAPIドキュメントを調べたところ、そのようなものは見つかりませんでした。

18
Stephen

大変な苦労の末、次の2つの解決策を見つけました。

製品ループでは、これを使用できます。

 if( $product->has_child() ) { 

しかし、単一の製品ページの短い説明で何らかの理由で、私はこれを使用する必要がありました:

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

これが私が苦労していた他の人を助けることを願っています...

26
Stephen

$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()関数もあります。

51
Danijel

何らかの理由でバリエーションを削除した場合、has_child()関数はまだtrueになります。

だから私は以下のソリューションを使用しました

if(empty($product->get_available_variations())) {
  // Your code goes here
}
1
Mario Shtika