根据类别在Woocommerce的单个产品页面上显示内容

时间:2016-01-21 15:29:57

标签: wordpress woocommerce

我太近了 - 但是最后一点也无法得到。

我将作者姓名添加到我们出售的书籍中。风格需要与书名不同,所以我使用自定义元字段将其置于标题下并按照我想要的方式设置样式。我有一切工作和我想要的地方,现在我只需要它只显示在特定类别而不是所有产品。

在我看来,有两种方法可以做到这一点。 1 - 仅显示特定类别的产品 2 - 仅在有内容时显示。

我目前只是尝试显示它是否属于特定类别,但在编写时,它似乎是一种更优雅的解决方案,只有在内容存在时才会显示。

这就是我所拥有的

function cn_add_add_subhead_to_title() {

  global $woocommerce, $post;

 if ( is_product() && has_term( 'books-media', 'product_cat' ) ) {
    ?>
    <div class="cn-subhead">
      by <?php echo get_post_meta( $post->ID, '_text_field', true ); ?>  
    </div>
    <?php

 } 

}
add_action( 'woocommerce_single_product_summary', 'cn_add_add_subhead_to_title', 6 );

这不会显示在任何地方,但是当我取出它在所有产品上显示的if语句时。

知道我哪里出错了吗?

3 个答案:

答案 0 :(得分:0)

如果您只是测试meta的存在怎么办?如果您不将元保存在其他类别中,它将永远不会显示:

function cn_add_add_subhead_to_title() {

  global $post;

 if ( $meta = get_post_meta( $post->ID, '_text_field', true ) ) {
    ?>
    <div class="cn-subhead">
      <?php printf( __( 'by %s', 'textdomain' ), $meta ); ?>  
    </div>
    <?php

 } 

}
add_action( 'woocommerce_single_product_summary', 'cn_add_add_subhead_to_title', 6 );

答案 1 :(得分:0)

Helga - 感谢您的关注和帮助。我有一点时间,所以我决定尝试另一种只显示元素的路线,如果有内容而不是基于类别。无论如何,这可能是一个更灵活的解决方案,使该字段对他们想要的任何类型的子标准开放,而不是仅限于作者。

这个代码有效:

UPDATE  outer, inner
SET    outer.ANSWER_DURATION = inner.ANSWER_DURATION
WHERE   inner.TEST_ITEM_EXT_ID=outer.TEST_ITEM_EXT_ID AND 
       inner.STUDENT_EXT_ID=outer.STUDENT_EXT_ID;

答案 2 :(得分:0)

以下是Helga上下文中的答案 - 此片段将向woocommerce产品编辑仪表板添加自定义元字段,保存内容并将其显示在单个产品视图的产品标题下。

{{1}}