2012-07-25 83 views
1

我有我的網站上的維基節,我想修改WordPress的本地搜索,只搜索此維基頁面,或換句話說,只有#278頁的孩子。 我成功地用wp_list_pages和參數'child_of'列出給定頁面的子頁面,所以我一直在嘗試這樣的事情。兩次嘗試至今: 在搜索頁面...WordPress的 - 使搜索只搜索特定頁面的兒童

<?php if (have_posts(array('child_of'=>278))) : ?> 
... 
<?php while (have_posts(array('child_of'=>278))) : the_post(array('child_of'=>278)) ?> 
在我的函數文件

還或者...

function SearchWikiPages($query) { 
    if ($query->is_search) { 
     $query->query_vars['child_of']=278; 
    } 
    return $query; 
} 
add_filter('pre_get_posts','SearchWikiPages'); 

所以沒有運氣遠。如果有人知道我可以怎麼做,請幫助。我不會反對使用插件,或任何其他創意解決方案,如果它得到我需要的。 謝謝!

回答

0

您的方法應該工作;該問題似乎與使用child_of。我不認爲這是一個參數WP_Query明白(它沒有在the Codex中提到)。

$query->set('post_parent', 278); 

更換

$query->query_vars['child_of']=278; 

爲我工作。

+0

嗯 - 看起來像'child_of'抓住所有的後代,'post_parent'只抓住直接的孩子。可能需要做兩件事 - 獲取所有的後代,然後使用那些與你的條件(例如'post_in' – Hobo 2012-07-27 11:57:40

+0

嗯,你是什麼意思?我是否仍然在我的函數文件中編輯過濾器?只需創建一個變量來存儲頁面278的所有後代,並調用我在哪裏調用set('post_parent',278)? – russtuck91 2012-07-30 19:17:53

+0

對不起,是的 - 仍然在你的函數文件中的過濾器。創建一個存儲頁面278所有後裔的變量(比如'$ descendants'),然後使用'$ query-> set('post__in',$ descendants);'而不是'post_parent'行。當然,如果你沒有多層次的頁面,'post_parent'應該可以正常工作。 – Hobo 2012-07-30 21:25:47