在WooCommerce中,"没有找到与您选择的产品匹配"。当循环中没有找到产品时,将出现文本。
但是,我想在文本中添加HTML,所以我使用gettext过滤器钩子。通过str_ireplace
,我可以很容易地覆盖文本:
function change_empty_category_text($translated) {
$translated = str_ireplace ('No products were found matching your selection.', 'sorry! we are not delivering products from this category to you pin code at the moment.', $translated);
return $translated;
}
add_filter( 'gettext', 'change_empty_category_text' );
然而,当我想在这个文本中添加HTML时:
function change_empty_category_text($translated) {
$translated = str_ireplace ('No products were found matching your selection.', 'sorry! we are not delivering products from this category to you pin code at the moment.rnplease visit the following categories insteadrn<a href = 'www.example.com/category1'>category 1</a>rn<a href = 'www.example.com/category2'>category 2</a>rn<a href = 'www.example.com/category3'>category 3</a>', $translated);
return $translated;
}
add_filter( 'gettext', 'change_empty_category_text' );
没有结果。相反,我得到的是与替换文本完全相同的文本。
任何建议吗?
您想要调整的文本可以在templates/loop/no-products-found.php中找到,因此您可以覆盖模板文件与使用gettext
过滤器钩子相比,因为这个钩子在每次页面加载时都会执行多次。
然而,还有另一种选择。由于wc_no_products_found
使用function_exits
,请参阅:/includes/wc-template-functions.php @version 2.5.0
if ( ! function_exists( 'wc_no_products_found' ) ) {
/**
* Handles the loop when no products were found/no product exist.
*/
function wc_no_products_found() {
wc_get_template( 'loop/no-products-found.php' );
}
}
更多信息:什么是"function_exists"在Wordpress
因此,我们将使用我们自己的函数来重写函数,而不是使用函数中通过wc_get_template()
调用的现有模板文件。
得到:
function wc_no_products_found() {
echo '<p class="woocommerce-info" style="display:block;">' .
__( 'Sorry! we are not delivering products from this category to you pin code at the moment.<br>Please visit the following categories instead', 'woocommerce' )
. '<br><a href ="www.example.com/category2">category 2</a><br><a href="www.example.com/category3">category 3</a></p>';
}
如您所见,输出完全可以根据您的需要定制。CSS可能需要调整,因为这是主题相关的。
代码在您的活动子主题(或活动主题)的functions.php
文件中。