web-dev-qa-db-ja.com

WooCommerceの「マイアカウント」ページのダッシュボードを検出する

ダッシュボードで「myaccount/my-account.php」テンプレートが使用されているかどうかを検出するにはどうすればよいですか。

現在私が使用しているもの:

_<?php
    global $wp;
    if ( !isset($wp->query_vars['page']) ) {
?>
    <a href="/mein-konto/">Back to my Account</a>
<?php } ?>

<div class="myaccount_content">
    <?php
        do_action( 'woocommerce_account_content' );
    ?>
</div>
_

しかし、それは一種のハッキーな感じがします。 is_myaccount_dashboard()関数のようなものはありませんか?

9
René Meye

更新:マイアカウントを具体的に検出する「ダッシュボード」ページ

_<?php
    global $wp;
    $request = explode( '/', $wp->request );

    // If NOT in My account dashboard page
    if( ! ( end($request) == 'my-account' && is_account_page() ) ){ 
?>
    <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id')); ?>">Back to my Account Dashboard</a>
<?php 
    } 
?>

<div class="myaccount_content">
    <?php
        do_action( 'woocommerce_account_content' );
    ?>
</div>
_

テストされ、動作します。


元の回答:

はい、もちろん、is_account_page()ネイティブのWooCommerce条件があり、顧客のアカウントページでtrueを返します。

is_account_page()is_user_logged_in()を使用した例を次に示します。マイアカウントのリンクURLを取得するには、get_permalink( get_option('woocommerce_myaccount_page_id') )を使用できます。

_if ( !is_account_page() ) { // User is NOT on my account pages

    if ( is_user_logged_in() ) { // Logged in user

    // Link to "My Account pages dashboard". 
?>  
    <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('My Account', 'woocommerce'); ?>"><?php _e( 'My Account', 'woocommerce' ); ?></a>
<?php }
    else { // User is NOT logged in

    // Link to "Login / register page".
?>  
    <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e( 'Login / Register','woocommerce' ); ?>"><?php _e( 'Login / Register', 'woocommerce' ); ?></a>

<?php 
    } 
} 
?>
_

参照:


その後、次のことができます テーマを介してWooCommerceテンプレートをオーバーライドする アカウントテンプレートを使用して、さらに多くのWooCommerceの動作を微調整します…

7
LoicTheAztec

同じ質問がありました(数年後、笑)。答えを見て、なぜそれが役に立たないのか疑問に思っている人のために、あなたが探しているものを正確に実行するwoocommerceで利用可能なエンドポイント検出機能があります。利用可能な関数のリストを読むことができます ここ

これはwoocommerceのドキュメントから直接取得されます。将来リンクが壊れた場合に備えてコピーしています

is_account_page()=>顧客のアカウントページでtrueを返します。

is_wc_endpoint_url()=> WooCommerceエンドポイントを表示するとtrueを返します

is_wc_endpoint_url( 'order-pay')=>注文支払いのエンドポイントページが表示されているとき。

is_wc_endpoint_url( 'order-received')=>受注した注文のエンドポイントページが表示されているとき。

is_wc_endpoint_url( 'view-order')=>ビューオーダーのエンドポイントページが表示されているとき。

is_wc_endpoint_url( 'edit-account')=>編集アカウントのエンドポイントページが表示されているとき。

is_wc_endpoint_url( 'edit-address')=>アドレス編集のエンドポイントページが表示されているとき。

is_wc_endpoint_url( 'lost-password')=>パスワードを紛失した場合のエンドポイントページが表示されているとき。

is_wc_endpoint_url( 'customer-logout')=>カスタマーログアウトのエンドポイントページが表示されているとき。

is_wc_endpoint_url( 'add-payment-method')=>支払い方法の追加のエンドポイントページが表示されているとき。

0
jeh