从自定义发布类型的自定义字段中获取结果

时间:2013-11-14 作者:ultraloveninja

如果试图从附加了位置自定义字段的自定义帖子类型中筛选出一些返回结果,则返回的位置将为。我不太确定在查询中需要在哪里应用case语句。或者,当它从帖子类型中提取信息时,我需要将其添加到查询中。

我目前有:

<?php
$mypost = array(\'post_type\' => \'staff\', \'posts_per_page\' => 20 );
$loop = new WP_Query( $mypost );
 ?>
<ul>

<?php while ( $loop->have_posts() ) : $loop->the_post();?>

<?php $items = get_post_meta( $post->ID, \'elements\', true ); 
foreach( $items as $i){
if($i[\'location\'] = \'local\') {
echo\'<li>
    <a href=" \'. get_permalink() .\' ">
    <img src=" \'. wp_get_attachment_url( $i[\'small-image\'] ) .\'" />
    <h4>\' . $i[\'staff-name\'] . \'</h4>
    <p>\' . $i[\'short-title\'] . \'</p>
    \' . $i[\'3-areas-of-focus\'] . \'
    </li></a>

    \';
    }
}
?>  

<?php endwhile; wp_reset_query(); ?>
<div class="clearfix"></div>

</ul>
我将位置的自定义字段作为复选框,因此在自定义帖子类型中显示:

local, out of town
问题是,一些工作人员可以在本地和外地找到工作地点,但有些只是本地的。

因此,我不确定是否需要在之前进行修剪分解,或者是否需要以其他方式在查询中进行查找。

2 个回复
最合适的回答,由SO网友:ultraloveninja 整理而成

好的,我成功了。

由于自定义字段的复选框将entires存储为逗号分隔的值,因此我需要分解分隔符,然后执行另一个循环来解析信息。

然后,我创建了两个单独的参数来分割数据并在echo中调用它。

下面是我最后的代码输出:

<?php
$mypost = array(\'post_type\' => \'staff\', \'posts_per_page\' => 20 );
$loop = new WP_Query( $mypost );  
?>
<ul>

 <?php while ( $loop->have_posts() ) : $loop->the_post();?>

 <?php $items = get_post_meta( $post->ID, \'elements\', true ); 

 foreach($items as $i) {

$loco = explode("," , $i[\'locations\']);

    foreach ($loco as $l) {

        if ($l != \'local\') {

            echo\'<li>
                    <a href=" \'. get_permalink() .\' ">
                <img src=" \'. wp_get_attachment_url( $i[\'small-image\'] ) .\'" />
                <h4>\' . $i[\'staff-name\'] . \'</h4>
                <p>\' . $i[\'short-title\'] . \'</p>
                \' . $i[\'3-areas-of-focus\'] . \'
                </li></a>
                \';
        }

    }
}
?>  

<?php endwhile; wp_reset_query(); ?>
<div class="clearfix"></div>

</ul>
我知道这可能不是最优雅的解决方案,但它适用于我的自定义帖子类型。

SO网友:Waseem Khan

或者,如果您已经知道自定义post元值可以有什么类型的组合,您可能需要进行如下比较:

if($i[\'location\'] == \'local\' || $i[\'location\'] == \'out of town\' || $i[\'location\'] == \'local, out of town\') {
// your code here
}
作为补充说明,要在if语句中进行相等比较,需要==而不是单个=等号。Single=sign将实际为变量指定要比较的值,并且它将始终返回true。

结束

相关推荐

将一个PHP变量(loop-audio.php)传递给jQuery函数(js/script.js)

我已经为此搜索了很多次,似乎得到了不同的答案。在我的情况下,jQuery函数必须使用来自不同文件的PHP变量。我如何才能做到这一点?请给出清晰简单的答案。