如何在主页上仅显示虚假/粘滞的列表

时间:2013-09-05 作者:Bogdan Bătrânu

我想在我的主页上的第一页上只显示特色列表,无论它们有多旧

这是我的主页代码:

   <?php get_header(); ?>

<?php
if(get_option(\'aven_home\') == "listing") { ?>   
<?php include (TEMPLATEPATH . \'/lib/listhome.php\'); ?>
<?php } else { ?>
<div id="content">

<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query(\'paged=\'.$paged);
?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>   

<div class="post" id="post-<?php the_ID(); ?>">

<div class="title">
    <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2>
</div>
<div class="postmeta">
    <span class="author">Posted by <?php the_author(); ?> </span> <span class="clock">  <?php the_time(\'M - j - Y\'); ?></span> <span class="comm"><?php comments_popup_link(\'0 Comment\', \'1 Comment\', \'% Comments\'); ?></span>
</div>

<div class="entry">

<?php
if ( has_post_thumbnail() ) { ?>
    <a href="<?php the_permalink() ?>"><img class="postimg" src="<?php bloginfo(\'stylesheet_directory\'); ?>/timthumb.php?src=<?php get_image_url(); ?>&amp;h=150&amp;w=200&amp;zc=1" alt=""/></a>
<?php } else { ?>
    <a href="<?php the_permalink() ?>"><img class="postimg" src="<?php bloginfo(\'template_directory\'); ?>/images/dummy.png" alt="" /></a>
<?php } ?>
<?php wpe_excerpt(\'wpe_excerptlength_index\', \'\'); ?>
<div class="clear"></div>
</div>

</div>

<?php endwhile; ?>

<div class="clear"></div>

<?php getpagenavi(); ?>

<?php $wp_query = null; $wp_query = $temp;?>

</div>
<?php } ?>
<?php get_sidebar(); ?>

<?php get_footer(); ?>

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

首先,我建议您使用pre_get_post 钩住你的目标。如果只在主题中使用新的WP\\u查询,Wordpress在获取主题之前运行查询是没有意义的,因为这将是一项额外的工作,将被丢弃。使用pre\\u get\\u posts,我们可以更改主查询以符合我们的目的,并在不执行其他查询的情况下获得我们想要的内容。

就是这么说的。下面是一个示例代码:

//Functions for filters
add_action( \'pre_get_posts\', \'properties_pre_get_post\' );
function properties_pre_get_post($query){

    //limit to frontend, to the main query and to home page
   if($query->is_main_query() && !is_admin() && is_home() ) {
        //the main query to get only sticky posts
        $query->set(\'post__in\',get_option( \'sticky_posts\' ));
    }

}
将该代码放入函数中。php和在您的家中。可以运行的php模板文件the loop 像往常一样。

自定义帖子类型不支持内置的“粘性”功能,但您可以创建标记或分类术语,并按此标记进行筛选。例如,如果自定义帖子类型支持post\\u标记分类法,则可以创建一个名为“特色”的术语,并将每个帖子附加到此标记和过滤器:

//Functions for filters
add_action( \'pre_get_posts\', \'my_pre_get_post\' );
function my_pre_get_post($query){

     //limit to main query, frontend and home page
     if($query->is_main_query() && !is_admin() && is_home() ) {
          $tax_query = array (
                             \'taxonomy\'=> array(\'post_tags\'),
                             \'field\'   => \'slug\',
                             \'terms\'   => \'featured\',
                             );
          $query->set(\'tax_query\',$tax_query);
          //filter also by your custom post type
          $query->set(\'post_type\',\'listings\');
      } 
}

结束

相关推荐

当与“SETUP_POSTATA”一起使用时,“GET_POSTS”和“wp_GET_RENECT_POSTS”有什么不同?

这可能是一个完全“我对WP还是新手”类型的问题,但在使用get_posts() 和wp_get_recent_posts() 在我编写的自定义函数中setup_postdata(). 这是我的函数中的内容。php文件:<?php function getRecentPosts($total_posts = 2) { $total_posts = intval($total_posts); global $post; $args