【发布时间】:2015-11-11 21:24:36
【问题描述】:
变量 $category 以“summersummer”或“all-seasonall-season”的形式接收。
有什么办法可以分开吗?我正在尝试将其作为一个术语传递。
这是我的代码。
function advanced_search_query($query) {
if($query->is_search()) {
// category terms search.
$category = $_GET['category'];
$string_array = explode(" ",$category);
print_r($string_array);
$taxonomy = 'product_cat';
if (isset($category) && !empty($category)) {
$args = array(
array(
'taxonomy' => $taxonomy,
'field' => 'slug',
'terms' => $category
)
);
$query->set('tax_query', $args);
}
return $query;
} } add_action('pre_get_posts', 'advanced_search_query', 1000);
print_r 给了我 Array ( [0] => all-season ) Array ( [0] => all-season )
编辑 1(发送 $category 值的代码):
<form role="search" method="get" class="woocommerce-product-search" action="<?php print_r( $query ); ?><?php echo esc_url( home_url( '/' ) ); ?>">
<label class="screen-reader-text" for="s"><?php _e( 'Search for:', 'woocommerce' ); ?></label>
<input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search Products…', 'placeholder', 'woocommerce' ); ?>" value="<?php echo get_search_query(); ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label', 'woocommerce' ); ?>" />
<select name="category">
<option value="winter">Winter</option>
<option value="all-season">All Season</option>
<option value="run-flat">Run Flats</option>
<option value="summer">Summer</option>
</select>
<input type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button', 'woocommerce' ); ?>" />
<input type="hidden" name="post_type" value="product" />
【问题讨论】:
-
你在哪里有 $category 包含两次内容?根据 print_r 你只有“夏天”或“全季”,但你的函数被调用了两次。否则 print_r 会给你 Array ([0] => all-seasonall-season) 或 Array[0] => all-season, [1] => all-season)
-
这就是我无法理解的。 $category 的 var_dump 给了我 string(10) "all-season" string(10) "all-season"
标签: php arrays wordpress woocommerce explode