最新帖子-小部件显示存档页面上的所有帖子,但在其他任何地方都可以很好地工作

时间:2014-08-29 作者:okiedokey

我注意到我的页脚上有一个最新的posts小部件,显示了所有帖子。在我的页面的任何其他地方,它只显示它应该显示的帖子数量。我正在使用自定义主题,这是我的存档。php:

<?php get_header(); ?>

<div id="maincol">

    <article id="page-<?php the_ID(); ?>" class="page">
        <header class="page-header">
            <h1 class="page-title">Post Type Archive Title</h1>
        </header>

        <?php $posts = query_posts($query_string . \'&orderby=meta_value_num&meta_key=premium&posts_per_page=6\'); ?>
        <?php if ( have_posts() ) : ?>

            <h3 class="toggle">Filter</h3>
            <div id="filterbox">
                 <?php echo do_shortcode(\'[ULWPQSF id=82 formtitle="0"]\'); ?>
                 <small class="toggle-close">close</small>
            </div>

            <?php
                echo \'<div class="objects">\';
                echo \'<ul class="list-objects clear">\';
                while ( have_posts() ) { the_post();
                    get_template_part(\'content\', \'my-post-type\');
                }
                if(function_exists(\'wp_pagenavi\')) :
                    wp_pagenavi();
                endif;
        endif; 
        echo \'</ul>\';
        echo \'</div>\';
        wp_reset_query();
        wp_reset_postdata();

        ?>

    </article>
 </div><!-- maincol-->

<aside class="sidebar" id="sidebar-main">
    <?php get_sidebar(); ?>
</aside>
<div class="clear"></div>

<?php get_footer(); ?>
你能找出错误吗?

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

多亏了@Pieter Goosen和@cybmeta的评论,我改变了在归档页面上订购帖子的方式,使用pre_get_posts

我希望我的归档页面首先显示自定义字段值为1且名为“premium”(我创建自定义粘性帖子的方法)的帖子,然后显示所有“普通”帖子。

我在函数中添加了以下行。php文件(编辑:added!is\\u admin(),如Pieter的评论所示):

function custom_archive_query($query) {
    if ( is_post_type_archive(\'my-custom-post-type\') &&  $query->is_main_query() && !is_admin() ) {
        $query->set( \'posts_per_page\', 8 );
        $query->set( \'orderby\', \'meta_value_num\' );
        $query->set( \'meta_key\', \'premium\');
        $query->set( \'order\', \'DESC\' );
    }
}
add_action(\'pre_get_posts\', \'custom_archive_query\');
使用它有点重要$query->is_main_query()if-语句,否则任何其他类型的查询(例如WP菜单或最新帖子小部件)都不会显示任何内容。

结束

相关推荐

Multiple widgets in wordpress

我已经创建了一个wordpress小部件。它在小部件选项中有一个下拉列表。下拉列表包含“facebook”和“twitter”。如果管理员选择“twitter”,那么twitter关注者计数将显示在小部件中,与facebook的情况类似。使用jquery,该计数显示在id为“social count”的div中。当页面加载时,jquery ajax将获取计数并将其插入到“社交计数”中。问题是它在单个实例中运行良好。但是,如果在侧栏中添加了2个实例,则在这两个实例中都会显示最新的计数,因为我使用的是$(“.

最新帖子-小部件显示存档页面上的所有帖子,但在其他任何地方都可以很好地工作 - 小码农CODE - 行之有效找到问题解决它

最新帖子-小部件显示存档页面上的所有帖子,但在其他任何地方都可以很好地工作

时间:2014-08-29 作者:okiedokey

我注意到我的页脚上有一个最新的posts小部件,显示了所有帖子。在我的页面的任何其他地方,它只显示它应该显示的帖子数量。我正在使用自定义主题,这是我的存档。php:

<?php get_header(); ?>

<div id="maincol">

    <article id="page-<?php the_ID(); ?>" class="page">
        <header class="page-header">
            <h1 class="page-title">Post Type Archive Title</h1>
        </header>

        <?php $posts = query_posts($query_string . \'&orderby=meta_value_num&meta_key=premium&posts_per_page=6\'); ?>
        <?php if ( have_posts() ) : ?>

            <h3 class="toggle">Filter</h3>
            <div id="filterbox">
                 <?php echo do_shortcode(\'[ULWPQSF id=82 formtitle="0"]\'); ?>
                 <small class="toggle-close">close</small>
            </div>

            <?php
                echo \'<div class="objects">\';
                echo \'<ul class="list-objects clear">\';
                while ( have_posts() ) { the_post();
                    get_template_part(\'content\', \'my-post-type\');
                }
                if(function_exists(\'wp_pagenavi\')) :
                    wp_pagenavi();
                endif;
        endif; 
        echo \'</ul>\';
        echo \'</div>\';
        wp_reset_query();
        wp_reset_postdata();

        ?>

    </article>
 </div><!-- maincol-->

<aside class="sidebar" id="sidebar-main">
    <?php get_sidebar(); ?>
</aside>
<div class="clear"></div>

<?php get_footer(); ?>
你能找出错误吗?

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

多亏了@Pieter Goosen和@cybmeta的评论,我改变了在归档页面上订购帖子的方式,使用pre_get_posts

我希望我的归档页面首先显示自定义字段值为1且名为“premium”(我创建自定义粘性帖子的方法)的帖子,然后显示所有“普通”帖子。

我在函数中添加了以下行。php文件(编辑:added!is\\u admin(),如Pieter的评论所示):

function custom_archive_query($query) {
    if ( is_post_type_archive(\'my-custom-post-type\') &&  $query->is_main_query() && !is_admin() ) {
        $query->set( \'posts_per_page\', 8 );
        $query->set( \'orderby\', \'meta_value_num\' );
        $query->set( \'meta_key\', \'premium\');
        $query->set( \'order\', \'DESC\' );
    }
}
add_action(\'pre_get_posts\', \'custom_archive_query\');
使用它有点重要$query->is_main_query()if-语句,否则任何其他类型的查询(例如WP菜单或最新帖子小部件)都不会显示任何内容。

相关推荐

Using add_filter() in Widgets

只需查询引用add_filter() 作用您可以在WordPress小部件类中使用此函数吗。Example我有一个带有动态创建代码的小部件,我想将其传递给插件中创建的另一个函数。这能实现吗?<?php /** * Display the actual Widget * * @param Array $args * @param Array $instance */ public function widget($args, $inst