私は私のブログのホームページで内容のバランスをとる方法を探しています:
ブログには、Poscasts、Videos、Blogなどの投稿タイプがいくつかあります。ホームページで10の投稿を言いたいのですが、そのうち5つを常に最新のブログにしたいと思います。
3つの別々の箱を作ることは私の問題を解決しません。なぜなら、投稿は混ざり合っていて、他のタイプの投稿と同じくらい多くはないからです。
私は純粋なPHPの上でそれに対する解決策を考えることができました、しかし、私はwordpress APIを使ってこれをする方法についてのアイデアを手に入れたいです、どんな助けでも、参照は歓迎されるでしょう!
もっと速いかもしれない代替手段をまだ探しているなら、これはあなたを助けるかもしれません:
<?php
function customBlogFeed() {
// The Query
$the_query = new WP_Query( array ( 'post_type' => array( 'post', 'page', 'movie', 'book'), 'posts_per_page' => '6' ) );
//Your post_type array is a list of random post_types. You can add whatever you'd like to match your system.
// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php the_title(); ?>
<?php the_content(); ?>
<?php endwhile;
// Reset Post Data
wp_reset_postdata();
}
?>
それから、その出力を得るために、あなたがこれを出力したいところに<?php customBlogFeed(); ?>
を置いてください。
あなたが本当に空想を得たいならば、あなたは post_limits フィルタに引っ掛けることができて、1ポストタイプにつきいくつのポストが表示されるか制限します。これがあなたの探求に役立つことを願っています。
PS - WP_Query を調べてください。これは本当に役に立ちます。
いくつかの調査の後、実際に post_clauses を調べて、WP3.1 +でこれらのSQLの特徴付けを行うことをお勧めします。
だから、数ヶ月後。私はあなたの正確な質問に対する答えを見つけました:
add_action('pre_get_posts', 'custom_main_query', 1);
function custom_main_query( $query ) {
if ( $query->is_main_query() && is_home() ) {
//be super careful with this and to be safe, keep the is_home()
//bit there, I've had some funny results without it.
$query->query_vars['posts_per_page'] = 3; //displays 3 posts ;)
$query->query_vars['post_type'] = array('post'); //and if you wanted multiple cpts <3
return $query;
}
}
乾杯