如何将产品类别名称从 wordpress URL 传递到我的短代码?
How do I pass the product category name from the wordpress URL to my shortcode?
我正在尝试根据 URL 中的产品类别名称填充产品下拉列表。
我可以通过在我的函数中输入名称来静态地做到这一点,但我很想以编程方式做到这一点,这样我就可以根据用户所在的产品类别页面填充下拉列表。
我的代码
function dropdownproducts()
{
$term_names = array('fruits');
$query = new WP_Query(array(
'posts_per_page' => -1,
'post_type' => 'product',
'post_status' => 'publish',
'hide_empty' => 0,
'orderby' => 'title',
'tax_query' => array(array(
'taxonomy' => 'product_cat',
'field' => 'name',
'terms' => $term_names,
)),
'echo' => '0'
));
$output = '<select onChange="window.location.href=this.value">';
// foreach ( $products as $product ) {
if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
$permalink = get_permalink($query->post->ID);
$title = $query->post->post_title;
$output .= '<option value="' . $permalink . '">' . $title . '</option>';
endwhile;
wp_reset_postdata();
$output .= '</select>';
else :
$output = '<p>No products found<p>';
endif;
return $output;
}
add_shortcode('products_dropdown', 'dropdownproducts');
根据代码,如果我在术语名称中输入产品类别名称,我将获得该类别下的产品。我很乐意根据 URL 末尾的内容动态地执行此操作,例如,如果 URL 是 /product-category/food/ 我想在下拉列表中获取食物下的所有产品。
您可以使用 get_queried_object。检查下面的代码。
$term = get_queried_object();
if( !empty( $term ) ){
$term_names = array( $term->name );
}else{
$term_names = array( 'fruits' );
}
$query = new WP_Query( array(
'posts_per_page' => -1,
'post_type' => 'product',
'post_status' => 'publish',
'hide_empty' => 0,
'orderby' => 'title',
'tax_query' => array( array(
'taxonomy' => 'product_cat',
'field' => 'name',
'terms' => $term_names,
) ),
'echo' => '0'
) );
我正在尝试根据 URL 中的产品类别名称填充产品下拉列表。
我可以通过在我的函数中输入名称来静态地做到这一点,但我很想以编程方式做到这一点,这样我就可以根据用户所在的产品类别页面填充下拉列表。
我的代码
function dropdownproducts()
{
$term_names = array('fruits');
$query = new WP_Query(array(
'posts_per_page' => -1,
'post_type' => 'product',
'post_status' => 'publish',
'hide_empty' => 0,
'orderby' => 'title',
'tax_query' => array(array(
'taxonomy' => 'product_cat',
'field' => 'name',
'terms' => $term_names,
)),
'echo' => '0'
));
$output = '<select onChange="window.location.href=this.value">';
// foreach ( $products as $product ) {
if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
$permalink = get_permalink($query->post->ID);
$title = $query->post->post_title;
$output .= '<option value="' . $permalink . '">' . $title . '</option>';
endwhile;
wp_reset_postdata();
$output .= '</select>';
else :
$output = '<p>No products found<p>';
endif;
return $output;
}
add_shortcode('products_dropdown', 'dropdownproducts');
根据代码,如果我在术语名称中输入产品类别名称,我将获得该类别下的产品。我很乐意根据 URL 末尾的内容动态地执行此操作,例如,如果 URL 是 /product-category/food/ 我想在下拉列表中获取食物下的所有产品。
您可以使用 get_queried_object。检查下面的代码。
$term = get_queried_object();
if( !empty( $term ) ){
$term_names = array( $term->name );
}else{
$term_names = array( 'fruits' );
}
$query = new WP_Query( array(
'posts_per_page' => -1,
'post_type' => 'product',
'post_status' => 'publish',
'hide_empty' => 0,
'orderby' => 'title',
'tax_query' => array( array(
'taxonomy' => 'product_cat',
'field' => 'name',
'terms' => $term_names,
) ),
'echo' => '0'
) );