WordPress的PHP回声结果与查询
问题描述:
我有一个页面上的结果列表(每个结果是自定义帖子类型的标题)。每个自定义帖子都附有元数据(存储在数据库的wp_postmeta中),其中一个元数据位是变量wedding_hidden_is_completed
WordPress的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>';
}
答
尝试......
更换
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>';
}
啊是的,这工作完全 –
伟大的东西 - 你有问题是,一旦你设置$ ERROR_MESSAGE将保持设定。因此,通过保持所有条件(如果),那么它只会显示,当它应该:) –
谢谢西蒙,我想从长远来看,我宁愿所有我的邮件存储为一个数组(因为会有更多,如果语句)例如if($ is_deposit_paid!= 1){ - 理想情况下,我想只有一行代码能够回显所有错误 - 您认为这是可能的吗? –