根据页面的插件按类别名称过滤帖子

时间:2013-12-20 作者:NW Tech

我已经创建了一个页面模板,目标是创建一个循环,按类别名称获取所有帖子。类别名称从页面名称的slug中传递。我还没能让它完全发挥作用。

EDIT 以下是我的循环函数(根据答案更新):

global $post;
$page_slug = $post->post_name;

$category_query = new WP_Query(array(
    \'category_name\' => $page_slug
));

if ($category_query->have_posts()) :
    while ($category_query->have_posts()) :
        $category_query->the_post();
        $output = \'<h2 class="entry-title" itemprop="headline"><a href="\'.get_the_permalink().\'">\'.get_the_title().\'</a></h2>\';
        $output .= \'<div class="entry-content" itemprop="text">\'.get_the_content().\'</div>\';
    endwhile;
else :
    $output = \'<h3>No posts found under "\'.$page_slug.\'"</h3>\';
endif;

wp_reset_postdata();

echo $output;
我在某个地方搞砸了,因为我得到的只是一张空白的白纸。关于如何修复我的循环以实现我所寻找的目标,有什么建议吗?

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

您缺少一个endwhile;.get_* 标题、永久链接和内容您正在使用$page_slug 此处和$post_slug 那里只需使用一个相同的变量即可while 在支架内循环请参阅更新的代码:

global $post;
$page_slug = $post->post_name;
$args = array(
    \'category_name\' => $page_slug
);
$category_query = new WP_Query($args);

if ($category_query->have_posts()) {
    while ($category_query->have_posts()) {
        $category_query->the_post();
        ?>
        <h2 class="entry-title" itemprop="headline"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <div class="entry-content" itemprop="text"><?php the_content(); ?></div>
        <?php
    }
} else {
    ?>
    <h3>No posts found under "<?php echo $page_slug; ?>"</h3>
    <?php
}
wp_reset_postdata();

SO网友:M-R

我发现您的代码中几乎没有问题。

主要原因是,While循环未关闭,请在else:. 这就是为什么你会出现黑屏。您应该打开php错误,以避免出现任何未来致命错误的空白屏幕。

使用get_the_title() 而不是the_title()get_the_content() 而不是the_content()

结束

相关推荐

子主题中的Functions.php-加载JS

我的主题使用此函数加载Javascript和CSSfunction aitEnqueueScriptsAndStyles() { // just shortcuts $s = THEME_CSS_URL; $j = THEME_JS_URL; aitAddStyles(array( \'ait-jquery-prettyPhoto\' => array(\'file\' => \"$s/