簡単な説明テンプレートを編集して、変数(単一)製品ページと単純な製品ページで異なるようにしようとしています。そのページのコードは次のとおりです。
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ドキュメントを調べたところ、そのようなものは見つかりませんでした。
大変な苦労の末、次の2つの解決策を見つけました。
製品ループでは、これを使用できます。
if( $product->has_child() ) {
しかし、単一の製品ページの短い説明で何らかの理由で、私はこれを使用する必要がありました:
global $post;
$children = get_pages('child_of='.$post->ID);
if( count( $children ) !== 0 ) {
これが私が苦労していた他の人を助けることを願っています...
$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()
関数もあります。
何らかの理由でバリエーションを削除した場合、has_child()関数はまだtrueになります。
だから私は以下のソリューションを使用しました
if(empty($product->get_available_variations())) {
// Your code goes here
}