2016-10-15 7 views
-2

複数のifステートメントに問題があります。私は&&を使用していますが、最初のステートメントでのみ動作するようです。 コードは、このようなようなものです:複数のifステートメントの発行

global $post; 
$args = array('post_id' => $post->ID); 
$comment = get_comments($args); 
$user = wp_get_current_user(); 
if (3 <= count($comment) && $post->post_author == $user->ID) { 
    echo do_shortcode('[button]'); 
} else { 
    comment_form(); 
} 

それは基本的に3件の未満のコメントがあるならば、コメントフォームを表示することを統計が、そこに3以上であると、ボタンを表示し、その後のポスト著者ですか。ボタンは3つ以上のコメントがある場合にのみ表示されます。私はそれが欲しいのと同じように、投稿者だけであるかどうかをチェックしません。

+2

あなたはそれらの値は、必要な値であることを確認するために、 '数($コメント)'、 '$ポスト> post_author'と'する$ user-> ID'を印刷しようとしたことがあり? – CristianHG

答えて

0

説明していることは、ボタンを表示する2つのケースです。したがって、ifブロックに入るには2つの方法が必要です。 if文を論理演算子||でリファクタリングする必要があります。例えば

if($post->post_author == $user->ID || 3 <= count($comment)) { 
    echo do_shortcode('[button]'); 
} else { 
    comment_form(); 
} 
+0

はい、私は値をテストしようとしましたが、それは正しいです。 – David

+0

私が完了する前に、それが送信されます。値は正しいもので、&&の代わりにllを使ってみましたが、変更はありません。私も別々の条件にしようとしましたが、私がそれをしたときに、それが既にそのようにして3を受け取った場合、コメントフォームはまだ表示されます。 – David

+0

comment_form()は、user-> IDがpost_authorでないか、count($ comment)が> 3であるときに実行されます。それがあなたの望むものでない場合は、comment_form()を実行するか、そうでないときに再度教えてください。 OPは少し誤解を招くと思います。 –

0

私はそれを動作させるためにそのようなコードを変更しなければなりませんでした。

global $post,$current_user; 
 
$args = array('post_id' => $post->ID); 
 
$comment = get_comments($args); 
 
    get_currentuserinfo(); 
 
    if ($post->post_author == $current_user->ID) { 
 
    echo do_shortcode('[button]'); 
 
} elseif (3 <= count($comment)) { 
 
// blank 
 
} else { 
 
    comment_form(); 
 
}

関連する問題