“相关”帖子的自定义帖子类型比较分类法术语的循环?

时间:2013-01-14 作者:mathiregister

我有一个名为my_projects 还有一种自定义分类法project_tags.

我想编写一个函数,根据给定的分类术语返回5篇这种帖子类型的帖子。

所以我想打电话<?php get_related_projects("Car"); ?> 并获得5篇分享tag 汽车返回。

This is my current attempt (that doesn\'t work)

function get_related_projects( $term ) {
    echo \'<ul class="featured-items">\';

    $args = array(
        \'post_type\' => array(\'my_project\'),
        \'order\' => \'DSC\',
        \'post_count\' => 5,
        \'meta_key\' => \'project_tags\',
        \'meta_compare\'   => $term,
    );

    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
        global $post;
        ?>
        <li>
            <figure class="project-image">
                <?php if ( has_post_thumbnail()) : ?>
                   <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
                    <?php the_post_thumbnail(); ?>
                   </a>
                 <?php endif; ?>
            </figure>
            <h1 class="title"><a href="<?php the_permalink(); ?>"><span class="goto">a</span> <?php the_title(); ?></a></h1>
        </li>
        <?php
    endwhile;

    wp_reset_postdata();
    echo \'</ul>\';
}
由于我在自定义循环方面不是专家,我想知道我在这里做错了什么?谢谢你的帮助。

UPDATE:

<?php if ( get_related_projects( "Car" ) ):  ?>
        <em>Related Projects</em>
        <?php get_related_projects("Car"); ?>
<?php endif; ?>

1 个回复
最合适的回答,由SO网友:Mike Madern 整理而成

更改您的$args 稍微排列一点:

$args = array(
    \'post_type\' => array( \'my_projects\' ), // it need to get the posts from this post_type
    \'order\' => \'DESC\',
    \'posts_per_page\' => 5,
    \'project_tags\' => $term // search taxonomy
);
可以找到搜索分类术语的其他方法here 在WordPress Codex页面中。

回答您的问题update:

您可以添加返回的支票false 当函数“不能”返回值时:

// if the given category doesn\'t exist
if ( ! is_category( $term ) )
    return false;

// if the given category doen\'t have posts
if ( ! $loop->have_posts() )
    return false;
设置代码以检查是否存在相关项目的方式将无法像现在设置函数的方式那样工作,请尝试以下操作:

function get_related_projects( $term ) {
    // if the given category doesn\'t exist
    if ( ! is_category( $term ) )
        return false;

    $return = \'\';
    $return .= \'<ul class="featured-items">\';

    $args = array(
        \'post_type\' => array( \'my_projects\' ), // it need to get the posts from this post_type
        \'order\' => \'DESC\',
        \'posts_per_page\' => 5,
        \'project_tags\' => $term // search taxonomy
    );

    $loop = new WP_Query( $args );

    // if the given category doen\'t have posts
    if ( ! $loop->have_posts() )
        return false;

    while ( $loop->have_posts() ) : $loop->the_post();
        global $post;

        $figure = \'\';
        if ( has_post_thumbnail()) :
            $figure = sprintf( \'<a href="%1$s" title="%2$s">%3$s</a>\',
                get_permalink( get_the_ID() ),
                the_title_attribute( array( \'echo\' => false ) ),
                get_the_post_thumbnail( get_the_ID() )
            );
        endif;

        $return .= sprintf( \'
            <li>
                <figure class="project-image">%1$s</figure>
                <h1 class="title"><a href="%2$s"><span class="goto">a</span> %3$s</a></h1>
            </li>\',
            $figure,
            get_permalink( get_the_ID() ),
            get_the_title()
        );
    endwhile;

    wp_reset_postdata();
    $return .= \'</ul>\'

    return $return;
}
然后使用以下代码检查功能:

<?php if ( $projects = get_related_projects( "Car" ) ):  ?>
    <em>Related Projects</em>
    <?php echo $projects; ?>
<?php endif; ?>

结束

相关推荐

Loop within a loop?

我在我的页面上使用了几个自定义的wp\\u查询循环,第一个循环从某个类别检索新闻,然后用permalink显示其中的一个小摘录。第二个是另一个wp\\u查询,它获取带有几个高级自定义字段的自定义帖子类型。问题是,我想在第二个循环中使用另一个循环,从新闻部分获取3篇文章,并带有缩略图(基本上与第一个循环相反,它将获取所有其他类别)。在阅读了无数关于循环的文章后,我不知道如何在第二个循环中创建“嵌套”循环。我相信这必须很简单,看起来很容易做到。下面是我的代码,其中去掉了很多html。<?php