Wordpress PHP回显结果与查询

时间:2015-12-02 11:52:42

标签: php wordpress loops if-statement

我在页面上有一个结果列表(每个结果都是自定义帖子类型的标题)。每个自定义帖子都附加了元数据(存储在数据库中的wp_postmeta中),其中一个元数据是变量wedding_hidden_is_completed

对于此变量设置为0的每个自定义帖子,我想回显一条错误消息。

例如,假设我有ID为1,2,3,4的帖子,只有帖子2和3将变量wedding_hidden_is_completed设置为1,那么我需要回显2个单独的错误消息:Post with Error 1和第4个错误(这些应该包含在不同的div中)。

这是我到目前为止所做的:

global $wpdb;
$args = array(
'post_type' => 'bookings',
'meta_query' => array(
    array(
        'key' => 'wedding_user',
        'value' => $current_user->display_name,
        'compare' => '=',
    )
)
);
// Errors query
$errors_query = new WP_Query( $args );
// The Loop
if ( $errors_query->have_posts() ) {
while ( $errors_query->have_posts() ) {
    $errors_query->the_post();

// Fill out form \
$is_form_complete = get_post_meta( $errors_query->post->ID, 'wedding_hidden_is_completed', true );

if($is_form_complete !=1) {
$error_message = '<p>Error with post'.$errors_query->post->ID.'</p>';
}

?>
<div class="errors"><?php echo $error_message; ?></div>
<?php
}
}

这个目前回声出4个div(每个帖子类型一个),前3个用post 1表示错误,最后一个用post 4表示错误。我怎样才能使它只响应每个错误的div ?

更新:代码显示所有错误if语句

if($is_form_complete !=1) {
  $error_message = '<p>Booking form ID DISTR'.$errors_query->post->ID.' needs to be completed.</p>';
  echo '<div class="errors"><i class="fa fa-clock-o"></i>'.$error_message.'</div>';
}

// Deposit due
if($is_deposit_paid !=1) {
  $error_message = '<p>Booking form ID DISTR'.$errors_query->post->ID.' deposit now due.</p>';
  echo '<div class="errors"><i class="fa fa-clock-o"></i>'.$error_message.'</div>';
}

// Full Payment due
if($is_full_amt_paid !=1) {
  $error_message = '<p>Booking form ID DISTR'.$errors_query->post->ID.' remaining balance now due.</p>';
  echo '<div class="errors"><i class="fa fa-clock-o"></i>'.$error_message.'</div>';
}

1 个答案:

答案 0 :(得分:2)

试试这个......

替换

if($is_form_complete !=1) {
$error_message = '<p>Error with post'.$errors_query->post->ID.'</p>';
}

?>
<div class="errors"><?php echo $error_message; ?></div>
<?php

使用

if($is_form_complete !=1) {
  $error_message = '<p>Error with post'.$errors_query->post->ID.'</p>';
  echo '<div class="errors">'.$error_message.'</div>';
}

这样,只有在出现错误时才输出错误div。这将阻止它按照您的示例输出相同的错误3次。

<强>更新

对于您的多个错误:

在你的循环之前

// Define the variable first and give it a default value
$error_message = null;

然后在你的循环中(使用。=让我们添加到变量中)

// Form not complete
if($is_form_complete !=1) {
  $error_message .= '<i class="fa fa-clock-o"></i><p>Booking form ID DISTR'.$errors_query->post->ID.' needs to be completed.</p>';
}

// Deposit due
if($is_deposit_paid !=1) {
  $error_message .= '<i class="fa fa-clock-o"></i><p>Booking form ID DISTR'.$errors_query->post->ID.' deposit now due.</p>';
}

// Full Payment due
if($is_full_amt_paid !=1) {
  $error_message .= '<i class="fa fa-clock-o"></i><p>Booking form ID DISTR'.$errors_query->post->ID.' remaining balance now due.</p>';
}

最后关闭你的循环后

// Check if there are any errors to display
if($error_message != null) {
  echo '<div class="errors">'.$error_message.'</div>';
}
相关问题