如何根据 url 参数在特定页面上添加简码
How to add a shortcode on a specific page based on the url parameter
如果特定过滤器处于活动状态,我想在 WooCommerce 商店循环之前添加自定义内容。
例子url是这样的:/shop/?filter_brand=nike
到目前为止我试过这个:
add_action( 'woocommerce_before_shop_loop', 'amc_add_content_before_loop' );
function amc_add_content_before_loop() {
if ( is_product_category('nike') ) {
echo esc_html__("Custom content", "amc");
}
}
但是页面上没有显示内容
编辑
有了 Vincenzo 的回答,现在可以了。
我现在正在尝试使用变量并添加一个简码。我试过这个:
add_action( 'woocommerce_before_shop_loop', 'add_custom_content_before_shop_loop2' );
function add_custom_content_before_shop_loop2() {
$terms = get_terms( 'pa_brand' );
foreach ( $terms as $term ) {
if ( is_shop() && isset( $_GET['filter_brand'] ) && $_GET['filter_brand'] == $term->name ) {
echo do_shortcode('[block id="brand-'.$term->name.'"]');
}
}
}
所以它应该做的是,如果过滤器 $term->name
处于活动状态,则应回显带有 $term->name
的自定义简码。
但是没用。
考虑到您发布的url:/shop/?filter_brand=nike
,您可以这样做:
add_action( 'woocommerce_before_shop_loop', 'add_custom_content_before_shop_loop' );
function add_custom_content_before_shop_loop() {
if ( is_shop() && isset( $_GET['filter_brand'] ) && $_GET['filter_brand'] == 'nike' ) {
// add custom content
}
}
代码已经过测试并且可以工作。将它添加到您的活动主题的 functions.php 文件中。
编辑
要获取 pa_brand
属性名称,您使用 $term->name
而不是 $term->slug
。
$term
是 WP_Term
class. The structure of the WP_Term
object can be found here.
的实例
试试这个:
add_action( 'woocommerce_before_shop_loop', 'add_custom_content_before_shop_loop2' );
function add_custom_content_before_shop_loop2() {
$terms = get_terms( 'pa_brand' );
foreach ( $terms as $term ) {
if ( is_shop() && isset( $_GET['filter_brand'] ) && $_GET['filter_brand'] == $term->slug ) {
echo do_shortcode('[block id="brand-'.$term->slug.'"]');
}
}
}
如果特定过滤器处于活动状态,我想在 WooCommerce 商店循环之前添加自定义内容。
例子url是这样的:/shop/?filter_brand=nike
到目前为止我试过这个:
add_action( 'woocommerce_before_shop_loop', 'amc_add_content_before_loop' );
function amc_add_content_before_loop() {
if ( is_product_category('nike') ) {
echo esc_html__("Custom content", "amc");
}
}
但是页面上没有显示内容
编辑
有了 Vincenzo 的回答,现在可以了。 我现在正在尝试使用变量并添加一个简码。我试过这个:
add_action( 'woocommerce_before_shop_loop', 'add_custom_content_before_shop_loop2' );
function add_custom_content_before_shop_loop2() {
$terms = get_terms( 'pa_brand' );
foreach ( $terms as $term ) {
if ( is_shop() && isset( $_GET['filter_brand'] ) && $_GET['filter_brand'] == $term->name ) {
echo do_shortcode('[block id="brand-'.$term->name.'"]');
}
}
}
所以它应该做的是,如果过滤器 $term->name
处于活动状态,则应回显带有 $term->name
的自定义简码。
但是没用。
考虑到您发布的url:/shop/?filter_brand=nike
,您可以这样做:
add_action( 'woocommerce_before_shop_loop', 'add_custom_content_before_shop_loop' );
function add_custom_content_before_shop_loop() {
if ( is_shop() && isset( $_GET['filter_brand'] ) && $_GET['filter_brand'] == 'nike' ) {
// add custom content
}
}
代码已经过测试并且可以工作。将它添加到您的活动主题的 functions.php 文件中。
编辑
要获取 pa_brand
属性名称,您使用 $term->name
而不是 $term->slug
。
$term
是 WP_Term
class. The structure of the WP_Term
object can be found here.
试试这个:
add_action( 'woocommerce_before_shop_loop', 'add_custom_content_before_shop_loop2' );
function add_custom_content_before_shop_loop2() {
$terms = get_terms( 'pa_brand' );
foreach ( $terms as $term ) {
if ( is_shop() && isset( $_GET['filter_brand'] ) && $_GET['filter_brand'] == $term->slug ) {
echo do_shortcode('[block id="brand-'.$term->slug.'"]');
}
}
}