我使用这种方式在自定义产品页面中显示带有短代码的产品store链接。
/*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链接出现在标题之前。我不能把它放在我想要的地方。有人能帮我吗?
发布于 2021-10-22 13:37:06
短代码只应该是return内容,而不是echo或printf()内容。
请注意,由短代码调用的函数永远不会产生任何类型的输出。短代码函数应返回用于替换短代码的文本。直接产生输出会导致意想不到的结果。
所以你的代码应该更像这样。
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 '';
}https://wordpress.stackexchange.com/questions/397210
复制相似问题