在WooCommerce购物车项目中,我们可以添加自定义文本,但如何添加自定义链接?

时间:2019-09-24 作者:Zaheer Ahmad

我的目标是在购物车项目中,我必须显示每个产品的一个链接。

- on cart page - on checkout - on order summary in back-end

当我点击链接时,打开链接目标网站或文件

现在我可以保存每个购物车项目的自定义标题或文本,当我尝试传递链接标签时,它只显示没有链接的文本

我用这个链接归档了一个目标来显示文本,但现在我需要的是链接而不是文本。

link to archive custom text on each item

1 个回复
SO网友:Chetan Vaghela

您可以根据需要使用以下代码。它会将网站/文件url添加到购物车页面、结帐页面和后端的订单摘要中。

您需要在产品页面中为网站/文件url创建一个自定义字段。https://prnt.sc/pa7fyg

该url/链接将显示在:

“添加到购物车”按钮上方的“产品详细信息”页面中。https://prnt.sc/pa7h9s https://prnt.sc/pa7hxbhttps://prnt.sc/pa7j43https://prnt.sc/pa7jsp https://prnt.sc/pa7k70您可以根据需要更改文本/标签。

  /*
    # add link filed above add to cart button
    */

function output_web_file_url_field() {
    global $product;
     $id = $product->get_id();
     $web_file_url = get_post_meta($id,"file_website_url",true);
    if(!empty($web_file_url)){
    ?>
    <div class="web-file-url-field">
        <a href="<?php echo $web_file_url;?>"  target="_blank"/>Website/file</a>
        <input type="hidden" name="web-file-url" value="<?php echo $web_file_url;?>">
    </div>
    <?php
   }
}



add_action( \'woocommerce_before_add_to_cart_button\', \'output_web_file_url_field\', 10 );

/*
# Add Link to cart item.
*/
function web_file_url_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
    $web_file_url = filter_input( INPUT_POST, \'web-file-url\' );

    if ( empty( $web_file_url ) ) {
        return $cart_item_data;
    }

    $cart_item_data[\'web-file-url\'] = $web_file_url;

    return $cart_item_data;
}

add_filter( \'woocommerce_add_cart_item_data\', \'web_file_url_to_cart_item\', 10, 3 );

/*
# Display link in cart
*/
function display_web_file_url_cart( $item_data, $cart_item ) {
    if ( empty( $cart_item[\'web-file-url\'] ) ) {
        return $item_data;
    }

    $item_data[] = array(
        \'key\'     => __( \'Website/file\', \'iconic\' ),
        \'value\'   => sprintf( __( \'<a href="%s" target="_blank">Link</a>\'), $cart_item[\'web-file-url\']),
        \'display\' => \'\',
    );

    return $item_data;
}
add_filter( \'woocommerce_get_item_data\', \'display_web_file_url_cart\', 10, 2 );

/*
# Add Link to order.
*/
function add_web_file_url_to_order_items( $item, $cart_item_key, $values, $order ) {
    if ( empty( $values[\'web-file-url\'] ) ) {
        return;
    }
    $item->add_meta_data( __( \'Website_file_url\', \'iconic\' ), sprintf( __( \'<a href="%s" target="_blank">Link</a>\'), $values[\'web-file-url\']) );
}
add_action( \'woocommerce_checkout_create_order_line_item\', \'add_web_file_url_to_order_items\', 10, 4 );
我已经测试了代码,它正在工作。如果这对你有用,请告诉我!

相关推荐