2015-12-02 78 views
0

我有一个页面上的结果列表(每个结果是自定义帖子类型的标题)。每个自定义帖子都附有元数据(存储在数据库的wp_postmeta中),其中一个元数据位是变量wedding_hidden_is_completedWordPress的PHP回声结果与查询

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

例如,假设我有ID为1,2,3,4的帖子,只有帖子2和3将变量wedding_hidden_is_completed设置为1,那么我需要回显2个单独的错误消息:错误与帖子1 AND错误与职位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个格(每一个岗位类型),第3说与后1个错误,最后一个说用后错误4.我怎样才能让它只响应每个错误的div?

UPDATE:代码显示所有错误的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>'; 
} 

回答

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倍,根据您的例子。

UPDATE:

为了您的多个错误:

你的循环

// 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>'; 
} 
+0

啊是的,这工作完全 –

+0

伟大的东西 - 你有问题是,一旦你设置$ ERROR_MESSAGE将保持设定。因此,通过保持所有条件(如果),那么它只会显示,当它应该:) –

+0

谢谢西蒙,我想从长远来看,我宁愿所有我的邮件存储为一个数组(因为会有更多,如果语句)例如if($ is_deposit_paid!= 1){ - 理想情况下,我想只有一行代码能够回显所有错误 - 您认为这是可能的吗? –