我几天来一直在处理这个问题,我找不到这个问题的答案。我被要求制作一个woocommerce页面,以便购买一个特定的包。我们的想法是,一旦您选择其中一个“套餐”,就可以直接进入结账处并将其添加到购物车中。
这就是我设法做的事情:
// Remove Title single linking
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
//Image adding to cart and linking to checkout
add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_image_add_direct_checkout_link_open', 10);
add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_image_add_direct_checkout_link_close', 10);
function woocommerce_image_add_direct_checkout_link_open(){
$product = wc_get_product(get_the_ID());
global $woocommerce;
$checkout_url = $woocommerce->cart->get_checkout_url();
$shop_url = get_permalink( wc_get_page_id( 'shop' ) );
$product_id = $product->get_ID();
if( $product ) {
echo '<a href="' . $checkout_url . '" class="woocommerce-LoopProductImage-link">
<a rel="nofollow" href="' . $shop_url . '?add-to-cart=' . $product_id . '">';
}
}
function woocommerce_image_add_direct_checkout_link_close(){
$product = wc_get_product(get_the_ID());
if( $product )
echo '</a>
</a>';
}
我遇到的问题是,当我尝试打印两个时,其中一个被自动关闭而不是一个接一个地获得一个链接我得到2个链接,只有一个工作(它可以是结账或者添加到购物车,它将取决于我放在哪一个。)
网上印刷的当前html是这样的:
<li>
<a href="xxx/checkout">
</a>
<a rel="nofollow" href="xxx/shop/?add-to-cart=#ID>
//Code
</a>
//add to cart button
</li>
我喜欢打印的内容是这样的:
<li>
<a href="xxx/checkout">
<a rel="nofollow" href="xxx/shop/?add-to-cart=#ID>
//Code
</a>
//add to cart button
</a>
</li>
非常感谢任何类型的帮助。
编辑: 这就是代码之前的情况:
<ul>
<li>
<a href="xxx/single_product">
<img>
<h2>
</a>
//add to cart button
</li>
//List of products loop
</ul>
答案 0 :(得分:0)
好的,我找到了一个解决方案,返回我的第一个代码来解决这个问题。但是,让两个人打开它可能是不可能的,它可能是一个安全协议。然后唯一的事情是将2个链接强制为一个,我不想将它用作javascript,所以我想起了另一个重定向的钩子&#39; add-to-cart&#39;链接。考虑到这一点,我找到了我需要的答案。制作我自己的循环的代码就是这个:
//Change product's loop design
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 );
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
add_action( 'woocommerce_before_shop_loop_item', 'another_kind_of_loop' );
function another_kind_of_loop(){
$product = wc_get_product(get_the_ID());
$shop_url = get_permalink( wc_get_page_id( 'shop' ) );
$product_id = $product->get_ID();
$product_sku = $product->get_SKU();
$img = $product->get_image('fullsize');
$title = $product->get_title();
if($product){
?>
<a rel="nofollow" href="<?php echo $shop_url . '?add-to-cart=' . $product_id; ?>" data-quantity="1" data-product_id="<?php echo $product_id; ?>" data-product_sku="<?php echo $product_sku; ?>" >
<?php echo $img; ?>
<h2 class="product-loop_title">
<?php echo $title; ?>
</h2>
</a>
<?php
}
}
正如您所看到的,我重新创建了“添加到购物车”。如果有一天我将需要使用其他插件,请链接所有信息。但是,您还需要添加此代码:
// Redirect 'Add to cart' to 'Checkout'
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
global $woocommerce;
$checkout_url = $woocommerce->cart->get_checkout_url();
return $checkout_url;
}
此功能将向结帐添加重定向。而且我坚持使用“添加”这个词,因为无论如何它都会执行添加到购物车的链接,所以这至少会解决这个问题。