2017-01-16 7 views
0

ログインしていない場合はここで私はこれまで得たものです:。WooCommerce woa_remove_header_cartユーザーは、私はユーザーがログインしている場合にのみ、(メニューにあります)、ヘッダ・カートを表示したい

add_action('init','remove_header_cart_if_user_not_logged_in'); 

function remove_header_cart_if_user_not_logged_in() { 
    if (is_user_logged_in()) { 
     return; 
    } else { 
     add_action('init', 'woa_remove_header_cart'); 

    function woa_remove_header_cart() { 
     remove_action('storefront_header', 'storefront_header_cart', 60); 
    } 
} 

このコードは、エラーを作成します私のウェブサイトが表示されないようにします。 "[domain]ページが機能していません[domain]が現在このリクエストを処理できません。 HTTPエラー500"

else部分のみ(woa_remove_header_cart)はうまく動作しますが、 "ユーザーがログインした場合"の条件では、エラーが生成されます。

add_action('storefront_header','remove_header_cart_if_user_not_logged_in'); 

function remove_header_cart_if_user_not_logged_in() { 
    if (! is_user_logged_in()) { 
     remove_action('storefront_header', 'storefront_header_cart', 60); 
    } 
} 

あなたは同じ時間/優先順位でinitフックに二つの機能を追加している:あなたはそれを簡略化した場合にどのような

答えて

4

?それは最高で変です、あなたのエラーを引き起こしているかもしれません。また、WPがユーザーがログインしていることを知っているかどうかもわかりませんinit。今すぐチェックする時間がありませんが、それを避けることができます。 initフック上の関数を削除する必要はありません。関数が実行される前にそれを行うだけです。私の例では、私はstorefront_headerフックを使用していますが、デフォルト(10)の優先度は60より低いので動作するはずです。

+0

これはうまくいきました。 –

+0

偉大な、私はそれをさらに簡素化しましたが、それはまだ動作するはずです。 – helgatheviking

関連する問題