首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单产品页面中的Dokan市场商店链接

单产品页面中的Dokan市场商店链接
EN

WordPress Development用户
提问于 2021-10-22 09:58:21
回答 1查看 478关注 0票数 0

我使用这种方式在自定义产品页面中显示带有短代码的产品store链接。

代码语言:javascript
复制
/*Shortcode [vendor_shop_name] https://stackoverflow.com/questions/55364574/display-dokan-vendor-name-and-total-sales-on-woocommerce-single-product-pages*/
add_shortcode('vendor_shop_name', 'vendor_shop_name_function');
function vendor_shop_name_function() {
    global $product;
    $seller = get_post_field('post_author', $product->get_id());
    $author  = get_user_by('id', $seller);
    $vendor = dokan()->vendor->get($seller);
    $store_info = dokan_get_store_info($author->ID);
    
    if (!empty($store_info['store_name'])) {
        ?>
            in this store', $vendor->get_shop_url(), $vendor->get_shop_name()); ?>

它起作用了。但我的问题是,<#>store链接出现在标题之前。我不能把它放在我想要的地方。有人能帮我吗?

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2021-10-22 13:37:06

短代码只应该是return内容,而不是echoprintf()内容。

来自add_shortcode()文档

请注意,由短代码调用的函数永远不会产生任何类型的输出。短代码函数应返回用于替换短代码的文本。直接产生输出会导致意想不到的结果。

所以你的代码应该更像这样。

代码语言:javascript
复制
add_shortcode('vendor_shop_name', 'vendor_shop_name_function');
function vendor_shop_name_function() {
    global $product;
    $seller = get_post_field('post_author', $product->get_id());
    $author  = get_user_by('id', $seller);
    $vendor = dokan()->vendor->get($seller);
    $store_info = dokan_get_store_info($author->ID);
    
    if (!empty($store_info['store_name'])) {
        return sprintf( 'in this store %s', $vendor->get_shop_url(), $vendor->get_shop_name() );
    }
    // Nothing found; return an empty string.
    return '';
}
票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/397210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档