【发布时间】:2018-09-03 15:17:31
【问题描述】:
我下载了 BeRocket AJAX 过滤器插件,它改变了我的 url 查询字符串的格式,现在我获取产品图像的功能将无法正常工作。
这就是我获取查询字符串的方式;
<php $filter_colour = $_GET['filter_colour']; ?>
当我的查询字符串是这样的时候,这很好用;
www.website.co.uk/?filter_color=blue&filter_type_of_light=something
但现在我只能通过更改插件中的设置来获得如下查询字符串;
www.website.co.uk/?filters=type-of-light[550]|colour[569]
www.website.co.uk/?filters=type-of-light[ceiling-lights]|colour[pink]
www.website.co.uk/filters/type-of-light=ceiling-lights&colour=green
我如何仍然使用 $_GET 来获取这些链接的 url 中的颜色值?
wordpress 的永久链接选项卡中也有这些设置,我可以使用它们来更改查询字符串;
这些是我在插件中用于查询字符串的选项;
这是我使用$_GET获取颜色值的函数,我使用这个函数来设置产品上的图像;
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
add_action( 'woocommerce_before_shop_loop_item_title', 'set_product_image', 10);
function set_product_image() {
global $product;
if( $product->is_type('variable') ){
// color of first variation
$default_image = '';
foreach ( $product->get_visible_children() as $variation_id ){
$variation = wc_get_product( $variation_id );
$product_colour = strtolower( $variation->get_attribute('colour') );
// get first variation
if( $default_image == '' ){
$default_image = $variation->get_image( array(300, 300) );
}
$filter_colour = $_GET['colour'];
if( $product_colour == $filter_colour){
// if filter applied, echo and return
echo $variation->get_image( array(300, 300) );
return;
}
}
// filter not applied, return default image
echo $default_image ;
}
else if( $product->is_type('simple') ){
if ( has_post_thumbnail() ) {
echo $product->get_image( array(300, 300) );
}else{
echo '<img src="https://website.co.uk/wp-content/themes/dist/images/placeholder.png">';
}
}
}
【问题讨论】:
-
您只想单独获得
colour部分吗? -
是的,我只想要颜色的值
-
@user3783243 我能够稍微修改你的代码来做我需要的事情。如果您将其添加为答案,我可以接受。谢谢
-
@Reece 我已将其移至答案。