我正在尝试通过add\\u操作插入短代码:
add_action(\'woocommerce_single_product_summary\', \'quotation_form\', 61);
function quotation_form()
{
$produk = get_the_title();
$shortkode = sprintf(
\'[zendesk_request_form size="3" group="extra-field" subject="Quotation For %s"]\',
$produk
);
$shortkode = do_shortcode( $shortkode );
echo $shortkode;
}
但在显示短代码后出现错误:
未捕获错误:在/home/dev/wp-content/themes/dummy-child/woocommerce/single-product/up-sells中调用成员函数get\\u upsells()。菲律宾比索:25
与上述错误相关的行:
if ( ! $upsells = $product->get_upsells() ) {
return;
}
Source: https://github.com/woocommerce/woocommerce/blob/master/templates/single-product/up-sells.php
所以我认为:
短代码本身显示正确,但脚本停止执行,出现上述错误
当我尝试输出带有返回/回显纯文本或html的Quotence\\u form函数时,它工作正常,没有任何错误
我的问题是:如何在WooCommerce模板中插入短代码?有可能这样做吗?
非常感谢。
SO网友:Asisten
我用肮脏的方式解决了这个问题。。希望其他人能提供更高效的解决方案,我的最终工作代码针对上述问题:
$shortkode = \'[zendesk_request_form size="3" group="extra-field" subject="Quotation For -wkwkwk-"]\';
$shortkode = do_shortcode( $shortkode );
add_action(\'woocommerce_single_product_summary\', \'quotation_form\', 61);
function quotation_form()
{
$produk = get_the_title();
global $shortkode;
$shortkode = str_replace("-wkwkwk-", $produk, $shortkode);
echo $shortkode;
}
所以我将do\\u shorcode移到函数外部,然后将其声明为全局变量。问题是如果在Wordpress页面外声明$produk变量,它将无法工作,因此我使用str\\u replace替换前产品标题