web-dev-qa-db-ja.com

ホームページに注目/付箋リストのみを表示する方法

私は私の最初のページの私のホームページで何歳でも関係のあるリストだけを表示したいです。

これは私のホームページコードです:

   <?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

まず、 pre_get_post hookをあなたの目的のために使うことをお勧めします。テーマで新しいWP_Queryのみを使用する場合は、Wordpressがテーマを取得する前にクエリを実行しても意味がありません。これは、余分な作業が破棄されるためです。 pre_get_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' ));
    }

}

そのコードをfunctions.phpとあなたのhome.phpテンプレートファイルに入れると、いつものように ループ を実行できます。

カスタム投稿タイプでは組み込みの「スティッキ」機能はサポートされていませんが、たとえばタグや分類用語を作成し、このタグでフィルタすることができます。たとえば、カスタム投稿タイプがpost_tags分類法をサポートしている場合は、「featured」という用語を作成し、必要な各投稿をこのタグに添付してフィルタ処理できます。

//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');
      } 
}
0
cybmeta