检索自定义帖子类型的单个自定义字段

时间:2013-09-25 11:58:18

标签: wordpress

我有一个自定义帖子类型,其中包含使用高级自定义字段创建的自定义字段。我可以检索此类型的所有帖子,并使用以下代码显示图像:

<?php
$args = array( 'post_type' => 'image' );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php $image = get_field('image_file'); ?>
<img src="<?php echo $image['url']; ?>" />
<?php endwhile; ?>

但是,我希望能够检索单个图像网址而无需遍历所有图像网址。我该怎么做呢?

我试过这个:

<?php
$args = array( 'post_type' => 'image', 'title' => 'Welcome to bird - image 1' );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php $image = get_field('image_file'); ?>
<img src="<?php echo $image['url']; ?>" />
<?php endwhile; ?>

但它会输出整个列表 - 我怎样才能获得一个帖子?如果有帮助,永久链接就是这样的:

/?image=welcome-to-bird-image-1

2 个答案:

答案 0 :(得分:0)

不幸的是,您不能将X_posts表列名称用作WP_Query类中的参数,以便过滤数据库帖子。

唯一的解决方案是使用posts_where过滤器,然后应用常规MySQL代码来过滤帖子。这样的事情:

function filter_where_title($where = '')
{
    $where .= " OR post_title LIKE '%" . $your_term_here . "%'";                   
    return $where;
}

$posts = new WP_Query();

add_filter('posts_where', 'filter_where_title');

注意:以上示例是常规示例,您必须应用额外的代码才能严格限制自定义帖子记录中的过滤。上述代码也会影响其他帖子类型查询。

答案 1 :(得分:0)

我现在找到了解决方案:

<?php
$args = array( 'post_type' => 'image', 'image' => 'welcome-to-bird-image-3' );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php $image = get_field('image_file'); ?>
<img src="<?php echo $image['url']; ?>" />
<?php endwhile; ?>

按照我想要的方式过滤'image'。