ホームページ  >  に質問  >  本文

WooCommerce エンドポイントを完全に無効にする

<p>オンラインでたくさん検索しましたが、まだ答えが見つかりません。 そこで私はここの専門家に頼ります。 </p> <p>一部の WooCommerce エンドポイントを無効にしたいと考えています。インターネットによれば、以下に示すように、WooCommerce メニュー項目は <code>woocommerce_account_menu_items</code> フックを介して設定解除できるとのことです。 <pre class="brush:php;toolbar:false;">add_filter ( 'woocommerce_account_menu_items', 'my_remove_my_account_links' ); 関数 my_remove_my_account_links( $menu_links ){ /*** 特定の行を削除するには、該当する行のコメントを解除します。 * WooCommerce マイアカウント画面のエンドポイント。*/ //unset( $menu_links['dashboard'] ); // ダッシュボードを削除 //unset( $menu_links['edit-address'] ); // アドレス //unset( $menu_links['payment-methods'] ); // 支払い方法を削除します //unset( $menu_links['orders'] ); // 注文を削除します //unset( $menu_links['downloads'] ); // ダウンロードを無効にする //unset( $menu_links['edit-account'] ); // [アカウントの詳細] タブを削除 //unset( $menu_links['customer-logout'] ); // ログアウト リンクを削除 $men_links を返します; }</pre> <p>しかし、ここでの大きな問題は、これはフロントエンドのメニューリンクを削除するだけであるということです。 未設定のエンドポイントには、直接 URL 経由で引き続きアクセスできます。そのため、<code>https://example.de/myaccount/[unset-endpoint]</code> と入力すると、引き続きコンテンツにアクセスできます。 </p> <p>直接 URL 経由でリダイレクトにアクセスする方法を見つけました。支払い方法テンプレート (/woocommerce/templates/myaccount/payment-methods.php) にあるフック <code>woocommerce_before_account_payment_methods</code> を使用して、ダッシュボードにリダイレクトしました。 </p> <pre class="brush:php;toolbar:false;">function redirect_forbidden_​​access_account_endpoints(){ wp_redirect(wc_get_account_endpoint_url('ダッシュボード')); } add_action('woocommerce_before_account_payment_methods', 'redirect_forbidden_​​access_account_endpoints');</pre> <p>このメソッドは非常に便利ですが、<code>payment-methods</code> エンドポイントでのみ機能します。ネイティブ <code>down​​loads</code> エンドポイントとカスタム エンドポイントでも同じことを試みましたが、成功しませんでした。 </p> <p>そこで私の質問は次のとおりです。無効になっている特定の WooCommerce エンドポイントからダッシュボードに URL アクセスをリダイレクトする信頼できるソリューションはありますか? </p>
P粉596191963P粉596191963441日前579

全員に返信(2)返信します

  • P粉725827686

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

    これは次の 2 つの方法で実現できます:

    1. バックグラウンド設定に null 値を配置します
      [WooCommerce] > [設定] > [詳細設定] に移動し、[アカウント エンドポイント] 入力ボックスで特定のエンドポイントの値を削除し、空の値を保存できます。

      こうすると、アカウント ページにエンドポイント ページやメニュー項目が表示されなくなります。その URL にアクセスすると、アクセスした URL のホームページが表示されます。

    2. クエリ変数の設定を解除する
      フィルターフックを使用してクエリ変数の設定を解除できます。 https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L85
      85 行目に、すべてのクエリ変数を含む関数が見つかります。

      https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L232
      232 行目にはクエリ変数を取得する関数があり、これにはフィルターもあります。フィルターを使用して、必要なエンドポイントの設定を解除できます。

      この方法を使用する場合は、ナビゲーション メニュー項目から項目の設定を解除し、パーマリンク設定を再保存する必要もあります。

      次に、そのエンドポイントの URL にアクセスすると、アクセスした URL にホームページが表示されます。

    どちらの場合も、404 ページは表示されません。

    返事
    0
  • P粉217629009

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

    答えは「はい、あります!」です。私のフックは間違って書かれていました。今はwpフックを使っています。これは合法ですか?

    リーリー

    これが解決策です。

    返事
    0
  • キャンセル返事