从 WooCommerce 中的特定产品属性术语名称获取产品
Get a product from specific product attribute term name in WooCommerce
我正在尝试创建一个 WooCommerce 短代码来显示带有一些信息的产品。
每天都有一个属性为 DAGAANBIEDING
且值为 JA
或 NEE
的新产品。
我只想展示具有价值 JA
的产品。
简码有效,但未显示任何内容。
这是我的:
//custom shortcodes
if( !function_exists('product_snippet') ) {
function product_snippet( $atts ) {
// Attributes
extract( shortcode_atts(
array(
'taxonomy' => 'pa_dagaanbieding', // You will use $id to get the value of this attribute
'terms' => 'Ja' // You will use $snippet to get the value of this attribute
),
$atts
));
// Get an instance of the product object
$product = wc_get_product( $id );
// Displays go here
return '<div class="row">
<div class="col-md-6"><h3>'.$product->get_title().'</h3>'.$product->get_image().'<br><br><a href="'.get_permalink( $id ).'"><button type="submit" class="single_add_to_cart_button button alt">Bekijk aanbieding</button></a></div>
<div class="col-md-6">'.$product->get_regular_price().' '.$product->get_regular_price().'</div>
</div>';
}
add_shortcode( 'product_snippet', 'product_snippet' );
}
但是没有显示信息
您的代码中存在一些错误和缺失。尝试以下将使用自定义灯 SQL 查询获取具有 pa_dagaanbieding
产品属性(分类法)的 Ja
术语名称的产品:
if( !function_exists('display_product_dagaanbieding_ja') ) {
function display_product_dagaanbieding_ja( $atts ) {
// Attributes
extract( shortcode_atts(
array(
'taxonomy' => 'pa_dagaanbieding', // The taxonomy of this product attribute
'term_name' => 'Ja', // The term name for this product attribute
),
$atts
));
global $wpdb;
// SQL query: To get the product ID from defined product attribute term name
$product_id = $wpdb->get_var( $wpdb->prepare("
SELECT tr.object_id
FROM {$wpdb->prefix}term_relationships tr
INNER JOIN {$wpdb->prefix}term_taxonomy tt
ON tr.term_taxonomy_id = tt.term_taxonomy_id
INNER JOIN {$wpdb->prefix}terms t
ON tt.term_id = t.term_id
WHERE tt.taxonomy = '%s'
AND t.name = '%s'
", $taxonomy, $term_name ) );
// Exit if there is no product Id
if( ! $product_id ) return;
// Get an instance of the product object
$product = wc_get_product( $product_id );
// Exit if the product object is not defined
if( ! is_a( $product, 'WC_Product' ) ) return;
// Displays go here
return '<div class="row">
<div class="col-md-6"><h3>'.$product->get_title().'</h3>'.$product->get_image().'<br><br><a href="'.$product->get_permalink().'"><button type="submit" class="single_add_to_cart_button button alt">Bekijk aanbieding</button></a></div>
<div class="col-md-6">'.$product->get_price_html().'</div>
</div>';
}
add_shortcode( 'product_ja', 'display_product_dagaanbieding_ja' );
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
用法: [product_ja]
或 echo do_shortcode('[product_ja]');
我正在尝试创建一个 WooCommerce 短代码来显示带有一些信息的产品。
每天都有一个属性为 DAGAANBIEDING
且值为 JA
或 NEE
的新产品。
我只想展示具有价值 JA
的产品。
简码有效,但未显示任何内容。
这是我的:
//custom shortcodes
if( !function_exists('product_snippet') ) {
function product_snippet( $atts ) {
// Attributes
extract( shortcode_atts(
array(
'taxonomy' => 'pa_dagaanbieding', // You will use $id to get the value of this attribute
'terms' => 'Ja' // You will use $snippet to get the value of this attribute
),
$atts
));
// Get an instance of the product object
$product = wc_get_product( $id );
// Displays go here
return '<div class="row">
<div class="col-md-6"><h3>'.$product->get_title().'</h3>'.$product->get_image().'<br><br><a href="'.get_permalink( $id ).'"><button type="submit" class="single_add_to_cart_button button alt">Bekijk aanbieding</button></a></div>
<div class="col-md-6">'.$product->get_regular_price().' '.$product->get_regular_price().'</div>
</div>';
}
add_shortcode( 'product_snippet', 'product_snippet' );
}
但是没有显示信息
您的代码中存在一些错误和缺失。尝试以下将使用自定义灯 SQL 查询获取具有 pa_dagaanbieding
产品属性(分类法)的 Ja
术语名称的产品:
if( !function_exists('display_product_dagaanbieding_ja') ) {
function display_product_dagaanbieding_ja( $atts ) {
// Attributes
extract( shortcode_atts(
array(
'taxonomy' => 'pa_dagaanbieding', // The taxonomy of this product attribute
'term_name' => 'Ja', // The term name for this product attribute
),
$atts
));
global $wpdb;
// SQL query: To get the product ID from defined product attribute term name
$product_id = $wpdb->get_var( $wpdb->prepare("
SELECT tr.object_id
FROM {$wpdb->prefix}term_relationships tr
INNER JOIN {$wpdb->prefix}term_taxonomy tt
ON tr.term_taxonomy_id = tt.term_taxonomy_id
INNER JOIN {$wpdb->prefix}terms t
ON tt.term_id = t.term_id
WHERE tt.taxonomy = '%s'
AND t.name = '%s'
", $taxonomy, $term_name ) );
// Exit if there is no product Id
if( ! $product_id ) return;
// Get an instance of the product object
$product = wc_get_product( $product_id );
// Exit if the product object is not defined
if( ! is_a( $product, 'WC_Product' ) ) return;
// Displays go here
return '<div class="row">
<div class="col-md-6"><h3>'.$product->get_title().'</h3>'.$product->get_image().'<br><br><a href="'.$product->get_permalink().'"><button type="submit" class="single_add_to_cart_button button alt">Bekijk aanbieding</button></a></div>
<div class="col-md-6">'.$product->get_price_html().'</div>
</div>';
}
add_shortcode( 'product_ja', 'display_product_dagaanbieding_ja' );
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
用法: [product_ja]
或 echo do_shortcode('[product_ja]');