2017-04-13 7 views
0

ユーザーがメンバーとしてログインしているかどうか、またWordPressカスタム投稿タイプのメタフィールドにコンテンツが含まれているかどうかを確認しようとしています4つの可能な結果。私はメンバーとコンテンツが存在しているように、ユーザーがログインしている複数のif elseを使用してコンテンツとメンバーステータスを確認する

  • WordPressのメンバーシップのプラグインwoomembersに

      を使用しています - 表示内容をメンバーとコンテンツフィールドが空であるよう
    1. ユーザーがログインしている - 何も表示しない
    2. ユーザーではありません一部のコンテンツを表示し、メンバーではありません
    3. ユーザーがサインアップし、何のコンテンツが存在しない - - メンバーとコンテンツが存在しているディスプレイは、私は、このコードの一部が働いていますが、作業にアイテム3を得ることができない

    を申し込みます?

    私が持っているコードは次のとおりです。

    <?php $meta_content_field = get_post_meta($post->ID, "meta-content-field", 
    $single = true); 
    
        if (wc_memberships_get_user_active_memberships() && 
        $meta_lighting_diagram != '') { 
    
         // Active member and has content- do something here 
    
         ?> 
         html content here 
    
        <?php 
        } elseif (wc_memberships_get_user_active_memberships() && 
        empty($meta_content_field)) { 
    
         // No content but active member - do something here 
         echo "No content but active member"; 
    
        } elseif (! empty(wc_memberships_get_user_active_memberships()) && 
        ($meta_content_field)) { 
    
         // content but non-member - do something here - this is not working? 
         echo "Has content but NOT active member";  
    
        } else { 
    
         // Non-member - do something here ?> 
         html content here          
    
        <?php } 
        ?> 
    
  • 答えて

    1

    あなたのループが間違っています。最初のチェックはメンバーであるかどうかを確認する必要があります。

    if ($member) { 
    // do something for the member 
    } else { 
    // do something for the non-member 
    } 
    

    次に、コンテンツがあるかどうかをチェックします。 は多分、より良いアプローチはswitch()を使用することです

    if ($member) { 
    // do something for the member 
        if ($content) { 
        // member and content 
        } else { 
        // member no content 
        } 
    } else { 
    // do something for the non-member 
        if ($content) { 
        // non-member and content 
        } else { 
        // non-member no content 
        } 
    } 
    

    場合、ループ内でこれを行います。次のようになります。

    $status = '';  
    if ($member) $status = 'member'; 
        else $status = 'nonmember'; 
    if ($content) $status .= 'content'; 
        else $status .= 'nocontent'; 
    
    switch ($status) { 
        case 'membercontent': 
         // do something 
         break; 
        case 'membernocontent': 
         // do something 
         break; 
        case 'nonmembercontent': 
         // do something 
         break; 
        case 'nonmembernocontent': 
         // do something 
         break; 
    } 
    

    これはdefault:との組み合わせで(短縮)を簡略化することができます。

    関連する問題