初心者向けの方法としては、トップページ用のページを別途(home.phpを使用する)作り、ループ部分に下記を参考にパラメータを追加してください。
http://www.adphic.jp/wp/templatetag/loop/query_posts/
今回の除外方法の指定がなかったので、具体的な記述方法はこちらには紹介していません。
※home.phpの作り方
WordPressは、index.phpの他にhome.phpがある場合、home.phpをトップページとして優先される仕様になっています。
そのため、index.phpをダウンロードして、home.phpとリネームし、ループ部分に修正を行ったうえでアップロードすれば、home.phpがトップページとして表示されます。
query_post で post__not_in を指定すれば、質問にあるようなことは実現できるのだと思います。
ちょっと気になるのが、公式ドキュメントの query_posts のページにある以下の記述です。
query_posts()はWordPressのメインクエリーを変更し表示される投稿を変更する方法としては、最もかんたんですが、効率的ではなく、好まれない方法です。
テンプレートタグ/query posts - WordPress Codex 日本語版
キャッシュが有効に効かなくなって、データベースへのアクセスが増えるから、「効率的ではない」と言ってるのかな。
公式ドキュメントの仰せに従い、pre_get_posts を使った場合、こんな感じのコードになると思います。。
<?php function exclude_some_posts_in_home( $query ) { if ( $query->is_home() && $query->is_main_query() ) { /* id=10, 11, 15 の記事を除外 */ $query->set('post__not_in', array(10, 11, 15)); } } add_action( 'pre_get_posts', 'exclude_some_posts_in_home' ); ?>
例として、id が 10、11、15 の投稿をホームで表示の対象外にしています。
上記の記述を functions.php に追記すると、希望してることができるんじゃないかと思います。
テーマには何を使っているか、とか、PHP はどの程度分かるか、とか、PHP のソースはいじるつもりがない、というようなことを補足すると、もっと適切な回答が付くように思います(ぼく以外から (^^;。
pre_get_posts については、以下もご参考に。
▽3
●
boost_beast ●150ポイント ベストアンサー |
http://www.df-cue.com/wp/2010/01/15/advanced-category-excluder/
こちらを使用して見るのはどうでしょうか。