wordpress を使用して Web サイトを作成しており、すべてのポートフォリオ アイテムを表示するポートフォリオ ページがあります。これは、親ページ 'ポートフォリオ' のサブページで構成されています。サブページとそのコンテンツをポートフォリオの親ページに表示するには、特別なクエリが必要です。これを行うには、ポートフォリオ ページのページ テンプレートを作成するだけです。その上で、次のようにデータベースにクエリを実行しました。
$parent = post->ID; //portfolio page ID
query_posts('post_type=page&post_parent='.$parent);//grab those children of portfolio
素晴らしい。ただし、サーバーやワードプレスへの負担が少ないため、そのような仕事には pre_get_posts を使用する方が良いことを時間の経過とともに学びました。難しいですが、可能です:
function portfolioloop($query){
if ($query->is_page( 'portfolio') ){//query will only effect my portfolio page
$children = get_pages(array('child_of' => 35, 'echo' => 0) );
// i dont think post->ID; works here.
//35 is the post ID of portfolio. Let me know if im wrong.
// get and add the children id's to array. only id's is needed.
for($i = 0; $i < sizeof($children); ++$i) {
$portfolioitems[] = $children[$i]->ID; //$portfolioitems is a list of id's only. thats what we want
}
$query->set('post__in', $portfolioitems);
}
}
add_filter('pre_get_posts','portfolioLoop');
残念ながら、それはページが見つからないことを返します。私は何を間違えましたか?お役に立てることがあれば、よろしくお願いします。