仅将产品缩略图添加到结账页面,并包含变体名称

时间:2018-06-21 作者:Jon Fergus

我想在自定义插件中将产品缩略图添加到签出页面的查看顺序区域。我想限制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我已经尝试了好几次合并这些,但都失败了。任何帮助都将不胜感激!我这里的一些代码来自其他来源,因此,如果需要,关于如何清理它的提示/示例也会很有帮助。提前谢谢。

1 个回复
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;
}

结束

相关推荐

Organize functions.php

组织职能的最佳方式是什么。php的性能?我有几个add\\u操作调用、几个add\\u主题支持、几个add\\u过滤器和4个附加函数。对于面包屑、样式表、注册菜单和小部件。我们是否需要遵守订单?例如,首先是所有add\\u过滤器函数,然后是add theme\\u support等。不确定添加代码是否相关,因为这是一个一般性问题。如果需要,我很乐意更新这篇文章。