Rumah  >  Soal Jawab  >  teks badan

Lumpuhkan sepenuhnya titik akhir WooCommerce

<p>Saya telah banyak mencari dalam talian tetapi masih belum menemui jawapannya. Jadi saya bergantung kepada pakar di sini. </p> <p>Saya mahu melumpuhkan beberapa titik akhir WooCommerce. Internet memberitahu saya bahawa item menu WooCommerce boleh dinyahtetapkan melalui cangkuk <code>woocommerce_account_menu_items</code> <pre class="brush:php;toolbar:false;">add_filter ( 'woocommerce_account_menu_items', 'my_remove_my_account_links' ); fungsi my_remove_my_account_links( $menu_links ){ /*** Nyahkomen baris yang sesuai untuk mengalih keluar khusus * titik akhir dalam skrin Akaun Saya WooCommerce.*/ //unset( $menu_links['dashboard'] ); // Alih keluar Papan Pemuka //unset( $menu_links['edit-address'] ); // Alamat //unset( $menu_links['payment-methods'] ); // Alih keluar Kaedah Pembayaran //unset( $menu_links['orders'] ); // Alih keluar Pesanan //unset( $menu_links['muat turun'] ); // Lumpuhkan Muat Turun //unset( $menu_links['edit-account'] ); // Alih keluar tab butiran Akaun //unset( $menu_links['customer-logout'] ); // Alih keluar pautan Log Keluar kembalikan $menu_links; }</pre> <p>Tetapi masalah besar di sini ialah ini hanya mengalih keluar pautan menu di bahagian hadapan. Saya masih boleh mengakses titik akhir yang tidak ditetapkan melalui URL terus. Jadi apabila saya menaip <code>https://example.de/myaccount/[unset-endpoint]</code>, saya masih boleh mengakses kandungan tersebut. </p> <p>Saya menemui cara untuk mengakses ubah hala melalui URL terus. Saya menggunakan cangkuk <kod>woocommerce_before_account_payment_methods</code> <pre class="brush:php;toolbar:false;">function redirect_forbidden_access_account_endpoints(){ wp_redirect(wc_get_account_endpoint_url('dashboard')); } add_action('woocommerce_before_account_payment_methods', 'redirect_forbidden_access_account_endpoints');</pre> <p>Kaedah ini sangat berguna, tetapi hanya berfungsi dengan <kod>kaedah pembayaran</kod> Saya telah mencuba melakukan perkara yang sama dengan <code>muat turun</code> dan titik akhir tersuai tanpa kejayaan. </p> <p>Jadi soalan saya ialah: Adakah terdapat penyelesaian yang boleh dipercayai untuk mengubah hala akses URL daripada titik akhir WooCommerce yang dilumpuhkan khusus ke papan pemuka? </p>
P粉596191963P粉596191963441 hari yang lalu576

membalas semua(2)saya akan balas

  • P粉725827686

    P粉7258276862023-08-28 21:32:12

    Anda boleh melakukannya dengan dua cara berikut:

    1. Letakkan nilai nol dalam tetapan latar belakang
      Pergi ke WooCommerce > Advanced dan dalam kotak input titik akhir Akaun anda boleh memadamkan nilai untuk titik akhir tertentu dan menyimpan nilai kosong.

      Dengan cara ini anda tidak akan melihat halaman titik akhir atau item menu pada halaman akaun, jika anda melawati URL tersebut, anda akan melihat halaman utama pada URL yang anda lawati.

    2. Nyahtetapkan pembolehubah pertanyaan
      Anda boleh menggunakan cangkuk penapis untuk menyahset pembolehubah pertanyaan. https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L85
      Dalam talian 85 anda boleh mencari fungsi dengan semua pembolehubah pertanyaan.

      https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L232
      Dan pada baris 232 anda boleh menemui fungsi yang mendapat pembolehubah pertanyaan, yang juga mempunyai penapis. Anda boleh menggunakan penapis dan menyahset titik akhir yang diperlukan.

      Jika anda menggunakan kaedah ini, anda juga perlu menyahset item daripada item menu navigasi dan anda juga perlu menyimpan semula tetapan pautan kekal.

      Kemudian, jika anda melawati URL titik akhir itu, anda akan melihat halaman utama di URL yang anda lawati.

    Dalam kedua-dua kes, anda tidak akan melihat halaman 404.

    balas
    0
  • P粉217629009

    P粉2176290092023-08-28 15:42:08

    Jawapannya: Ya, ada! Mata kail saya salah tulis. Saya kini menggunakan cangkuk wp. Adakah ini sah?

    function redirect_forbidden_access(){
        $current_endpoint = WC()->query->get_current_endpoint();
        if($current_endpoint == "payment-methods" 
          || $current_endpoint == "add-payment-method"
          || $current_endpoint == "edit-payment-method" 
          || $current_endpoint == "[custom-endpoint]")
        {
            wp_redirect(wc_get_account_endpoint_url('dashboard'));
        }
    }
    add_action('wp', 'redirect_forbidden_access');

    Ini penyelesaiannya.

    balas
    0
  • Batalbalas