woocommerce短代码不适用于所有帖子

时间:2014-08-26 11:30:00

标签: php wordpress woocommerce

我已经创建了一个简短的代码来显示woo commerce中的简短描述,但它并不适用于所有帖子。它显示的是某些帖子的简短描述,而不是其他帖子。

在functions.php中创建短代码的功能

    function product_shortdesc_shortcode( $atts ){
    // use shortcode_atts() to set defaults then extract() to variables
    extract( shortcode_atts( array( 'id' => false ), $atts ) );

    // if an $id was passed, and we could get a Post for it, and it's a product....
    if ( ! empty( $id ) && null != ( $product = get_post( $id ) ) && $product->post_type = 'product' ){
        // apply woocommerce filter to the excerpt
        echo apply_filters( 'woocommerce_short_description', $product->post_excerpt );
    }
}
// process [product_shortdesc] using product_shortdesc_shortcode()
add_shortcode( 'product_shortdesc', 'product_shortdesc_shortcode' );

我在single.php文件中获取数据的方式

$custom = get_post_custom(get_the_ID());
$my_custom_field = $custom['woo_id'];
foreach ( $my_custom_field as $key => $value ) {
echo do_shortcode('[product_shortdesc id='.$value.']');
}

PS:在我的正常帖子中,我有一个自定义字段,其中包含了产品的产品ID值,并且这个字段为woo commerece。

2 个答案:

答案 0 :(得分:0)

您的问题是您希望功能不再存在的短代码。在新安装时,不会创建这些页面,但如果您要更新,则可能已经有了这些页面。

虽然升级脚本确实试图为您删除它们,但如果它们是自定义的,则可能不会发生这种情况。删除它们。删除编辑帐户并更改密码,然后转到“我的帐户”页面,然后点击更改密码/修改帐户链接。您将被带到提供相同功能的端点和端点。

由于

答案 1 :(得分:0)

短代码不得回显代码而是返回需要呈现的内容

更改此

echo apply_filters( 'woocommerce_short_description', $product->post_excerpt );

return apply_filters( 'woocommerce_short_description', $product->post_excerpt );