web-dev-qa-db-ja.com

WooCommerceミニカートウィジェットのカートとチェックアウトボタンのリンクを変更する

Woocommerceで、ホームページのショッピングカートアイコンにカーソルを合わせると表示されるドロップダウンメニューの[カートを表示]リンクと[チェックアウト]リンクのURLを変更するにはどうすればよいですか?

「カート」ページと「チェックアウト」ページを設定しましたが、これらにリンクされていません。

これらのページはURLで直接表示できます。 http:// mysite/cart および http:// mysite/checkout

enter image description here

4
Suren Konathala

ミニカートボタンのリンクは常に正しいカートとチェックアウトページを指しているため、テーマ(またはプラグイン)のどこかに問題があるようです。

ミニカートボタンが引っ掛かっていますwoocommerce_widget_shopping_cart_buttonsアクションフック(cart/mini-cart.php WooCommerceテンプレート内)。詳細がわかります includes/wc-template-hooks.phpのこちら コアファイル。ボタンを表示している 2関数 を呼び出します。

まず、WordPressパーマリンクを更新してみてください。WPSettings> パーマリンク
ページの最後で[保存]をクリックします。カートを空にして、もう一度試して、何かが変わるかどうかを確認してください。

以下のコードでは、最初に元のボタンを削除し、リンクがカスタマイズされているものと同じボタンに置​​き換えます。それぞれについて、必要に応じてリンクを足に変更できます(リンクに追加しました?id=1(最後に)テスト目的で、変更を確認するため):

add_action( 'woocommerce_widget_shopping_cart_buttons', function(){
    // Removing Buttons
    remove_action( 'woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_button_view_cart', 10 );
    remove_action( 'woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_proceed_to_checkout', 20 );

    // Adding customized Buttons
    add_action( 'woocommerce_widget_shopping_cart_buttons', 'custom_widget_shopping_cart_button_view_cart', 10 );
    add_action( 'woocommerce_widget_shopping_cart_buttons', 'custom_widget_shopping_cart_proceed_to_checkout', 20 );
}, 1 );

// Custom cart button
function custom_widget_shopping_cart_button_view_cart() {
    $original_link = wc_get_cart_url();
    $custom_link = home_url( '/cart/?id=1' ); // HERE replacing cart link
    echo '<a href="' . esc_url( $custom_link ) . '" class="button wc-forward">' . esc_html__( 'View cart', 'woocommerce' ) . '</a>';
}

// Custom Checkout button
function custom_widget_shopping_cart_proceed_to_checkout() {
    $original_link = wc_get_checkout_url();
    $custom_link = home_url( '/checkout/?id=1' ); // HERE replacing checkout link
    echo '<a href="' . esc_url( $custom_link ) . '" class="button checkout wc-forward">' . esc_html__( 'Checkout', 'woocommerce' ) . '</a>';
}

コードは、アクティブな子テーマ(またはテーマ)のfunction.phpファイル、または任意のプラグインファイルに含まれます。

すべてのコードはWoocommerce3 +でテストされ、機能します。

6
LoicTheAztec