我想在自定义插件中将产品缩略图添加到签出页面的查看顺序区域。我想限制apply\\u filter函数,使其仅适用于签出页面,但无论我尝试什么,它都会将其应用于购物车页面。
这是我尝试过的最新版本。我不明白为什么is\\u checkout部分似乎做不到我认为应该做的事情。
/* add product thumbnail to order review table on checkout page only */
add_filter(\'woocommerce_cart_item_name\', \'jwf_order_review_thumb\', 20, 2);
function jwf_order_review_thumb($cart_item, $cart_item_key){
global $product;
if (is_checkout()) {
$item_data = $cart_item_key[\'data\'];
$post = get_post($item_data->id);
$thumb = get_the_post_thumbnail($item_data->id, array( 32, 50));
echo \'<div id="jwf_checkout_thumbnail" style="float: left; padding-right: 8px">\' . $thumb . \'</div>\' ;
}
}
问题的第二部分是,我还想给出产品名称(包括变体)。为此,我从以下内容开始:
add_filter( \'woocommerce_cart_item_name\', \'cart_variation_description\', 20, 3);
function cart_variation_description( $name, $cart_item, $cart_item_key ) {
$product_item = $cart_item[\'data\'];
if(!empty($product_item) && $product_item->is_type( \'variation\' ) ) {
return $name;
} else
return $name;
}
我最终想做的是将这两个组合成一个单独的过滤器:
确定页面是否为签出页面,然后确定a。如果是签出页面:返回$thumb和$nameb。如果没有结帐:只返回$name我已经尝试了好几次合并这些,但都失败了。任何帮助都将不胜感激!我这里的一些代码来自其他来源,因此,如果需要,关于如何清理它的提示/示例也会很有帮助。提前谢谢。
SO网友:Jeffrey von Grumbkow
您可以使用条件检查来简单地为过滤器构建一个新的返回值。因此,请运行一次过滤器,并将所有代码放在其中。
您的第二个示例没有真正意义,因为不管怎样,您都返回了$name,您能解释更多吗?
add_filter( \'woocommerce_cart_item_name\', \'cart_variation_description\', 20, 3);
function wpse306625_cart_variation_description( $name, $cart_item, $cart_item_key ) {
$output = \'\';
if ( is_checkout() ) {
$item_data = $cart_item_key[\'data\'];
$post = get_post($item_data->id);
$thumb = get_the_post_thumbnail($item_data->id, array( 32, 50));
$output = \'<div id="jwf_checkout_thumbnail" style="float: left; padding-right: 8px">\' . $thumb . \'</div>\' ;
}
else {
$output .= $name;
}
return $output;
}