我已经创建了一个简短的代码来显示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。
答案 0 :(得分:0)
您的问题是您希望功能不再存在的短代码。在新安装时,不会创建这些页面,但如果您要更新,则可能已经有了这些页面。
虽然升级脚本确实试图为您删除它们,但如果它们是自定义的,则可能不会发生这种情况。删除它们。删除编辑帐户并更改密码,然后转到“我的帐户”页面,然后点击更改密码/修改帐户链接。您将被带到提供相同功能的端点和端点。
由于
答案 1 :(得分:0)
短代码不得回显代码而是返回需要呈现的内容
更改此
echo apply_filters( 'woocommerce_short_description', $product->post_excerpt );
到
return apply_filters( 'woocommerce_short_description', $product->post_excerpt );