修改小工具以按自定义顺序输出帖子

时间:2016-03-08 作者:orandanow

我正在使用一个名为“Smartline\\u Category\\u Posts\\u Grid\\u widget”的Smartline Lite主题小部件,它在首页列出所选类别的帖子。我已将帖子数量设置为10个。

小部件接受该类别的最新10篇文章,并以默认的反向颜色顺序输出它们。请查看我的网站底部(http://www.orandanow.com) 用于小部件输出结果。

现在,我想要的是能够在该类别的帖子上放置某种数字标记(例如:1、2、3等),以便小部件获取最新的10篇帖子,并按数字标记的升序列出它们。因此,该类别最近的10个员额不是按时间倒序排列的,而是按数字标记顺序排列的。

是否有人可以建议如何实施?我正在粘贴我认为运行循环的小部件代码部分。如果您想查看整个代码,请告诉我。

// Render Widget Content
function render( $settings ) {

    // Get latest posts from database
    $query_arguments = array(
        \'posts_per_page\' => (int)$settings[\'number\'],
        \'ignore_sticky_posts\' => true,
        \'cat\' => (int)$settings[\'category\']
    );
    $posts_query = new WP_Query( $query_arguments );
    $i = 0;

    // Check if there are posts
    if( $posts_query->have_posts() ) :

        // Limit the number of words for the excerpt
        add_filter(\'excerpt_length\', \'smartline_frontpage_category_excerpt_length\');

        // Display Posts
        while( $posts_query->have_posts() ) :

            $posts_query->the_post(); 

             // Open new Row on the Grid
             if ( $i % 2 == 0) : ?>

                <div class="category-posts-grid-row clearfix">

            <?php // Set Variable row_open to true
                $row_open = true;
            endif; ?>

            <?php // Display small posts or big posts grid layout based on options
            if( $settings[\'thumbnails\'] == true ) : ?>

                <div class="small-post-wrap">

                    <article id="post-<?php the_ID(); ?>" <?php post_class(\'small-post clearfix\'); ?>>

                    <?php if ( \'\' != get_the_post_thumbnail() ) : ?>
                        <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail(\'category_posts_small_thumb\'); ?></a>
                    <?php endif; ?>

                        <div class="small-post-content">
                            <?php the_title( sprintf( \'<h1 class="entry-title post-title"><a href="%s" rel="bookmark">\', esc_url( get_permalink() ) ), \'</a></h1>\' ); ?>
                            <div class="entry-meta postmeta"><?php $this->display_postmeta( $settings ); ?></div>
                        </div>

                    </article>

                </div>

            <?php else: ?>

                <article id="post-<?php the_ID(); ?>" <?php post_class(\'big-post\'); ?>>

                    <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail(\'category_posts_wide_thumb\'); ?></a>

                    <?php the_title( sprintf( \'<h1 class="entry-title post-title"><a href="%s" rel="bookmark">\', esc_url( get_permalink() ) ), \'</a></h1>\' ); ?>

                    <div class="entry-meta postmeta"><?php $this->display_postmeta( $settings ); ?></div>

                    <div class="entry">
                        <?php the_excerpt(); ?>
                    </div>

                </article>

            <?php endif; ?>

            <?php // Close Row on the Grid
            if ( $i % 2 == 1) : ?>

                </div>

            <?php // Set Variable row_open to false
                $row_open = false;

            endif; $i++;

        endwhile;

        // Close Row if still open
        if ( $row_open == true ) : ?>
            </div>
        <?php endif;

        // Remove excerpt filter
        remove_filter(\'excerpt_length\', \'smartline_frontpage_category_excerpt_length\');

    endif;
我不是程序员,所以请用简单的php行话。提前谢谢。

1 个回复
SO网友:mrwweb

看看这些代码,似乎没有任何过滤器可以让你做你想做的事情。这并不特别令人惊讶。。。

退一步说,帖子本质上是要包含按时间顺序排列的内容,因此插件允许按发布日期以外的任何内容排序是不寻常的。如果您需要这样做,我强烈考虑找到一种解决方案,将您的内容存储在页面或自定义帖子类型中。例如,页面有一个名为“菜单顺序”的字段,该字段正好用于您所描述的内容。此字段在帖子上不可用。(注:有可能Post Types Order 允许您这样做,但您设置的帖子顺序将反映在所有地方,而不仅仅是在小部件中。)

我建议找一个不同的小部件来实现这一点。我脑子里最清楚的是Query Posts, 虽然这会很麻烦。您可以收集并订购您想要的每个帖子的ID,并将其输入post__in 窗口小部件设置的字段。然后你会设置orderby 字段到post__in. (Flexible Posts Widgets 也可能允许这样做。)

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>