Lumpuhkan sepenuhnya titik akhir WooCommerce
P粉596191963
P粉596191963 2023-08-27 23:22:49
0
2
574
<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粉596191963
P粉596191963

membalas semua(2)
P粉725827686

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.

P粉217629009

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!