私は3つの異なるページ、page1、page2、page3を持っているとしましょう。wordpress:1ページに複数のページを表示するにはどうしたらいいですか?
静的なフロントページにpage1とpage2を表示します。ページ1とページ2だけをプルするようにループを制限するのですか、ループを開始し、name = "page1"などのテストをしてから印刷する必要がありますか? ありがとう! -Joe
私は3つの異なるページ、page1、page2、page3を持っているとしましょう。wordpress:1ページに複数のページを表示するにはどうしたらいいですか?
静的なフロントページにpage1とpage2を表示します。ページ1とページ2だけをプルするようにループを制限するのですか、ループを開始し、name = "page1"などのテストをしてから印刷する必要がありますか? ありがとう! -Joe
私はループをスキップして、ここで説明するように、単にget_page($id)
を使用します。
http://codex.wordpress.org/Function_Reference/get_page
あなたが知る必要があるすべてはあなたのページのIDがあり、あなたは1度に1つずつを引くことができますどこでも好きです。
これはどのように実行できるかの例です。このコードは、1つの親の下に表示するすべてのページがある場合に機能します。この場合、ホームページの下にページを置いていました(p.post_parent = 2)。
if ($post->post_type == 'page') {
$pages = $wpdb->get_results("SELECT p.ID, p.post_name, p.post_title, p.post_parent, pm.meta_value FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS pm ON pm.post_id=p.ID AND pm.meta_key='wp_menu_nav' LEFT JOIN $wpdb->posts AS P ON P.ID=p.post_parent WHERE p.post_parent = 2 AND p.post_type='page' AND p.post_status='publish' ORDER BY p.menu_order ASC");
if ($wpdb->num_rows > 0) {
foreach($pages as $page) {
//echo $page->ID . "<br>";
$args = array('numberposts' => 1, 'post_type'=> 'page', 'include' => $page->ID, 'post_status' => 'published');
$myposts = get_posts($args);
foreach($myposts as $mypost) {
setup_postdata($mypost);
echo the_content();
}
}
}
}
通常、生のSQLクエリを避けることができればそれを使用することはお勧めできません。 WordPressには任意の数のページにアクセスする方法がたくさんあります。 get_page()または 'pre_get_posts'でクエリを変更するとうまくいくはずです。 –
複数の不要な呼び出しとデータベースへの接続を行うWordPress関数を意味しますか? 誰かを助けることができるいくつかの関数を参照するのではなく、実際にいくつかのコードサンプルを与えるのはどうですか?私が提供したのは本当の解決策でした;-) – John
Wordpressで指定したテンプレートをそれぞれのページに適用したいのですか? – Prusprus
このアプローチは廃止されました –
私はこの質問への回答も探していますが、 'get_page'は廃止されました。誰も代替をお勧めできますか? – mattnewbie