這已經不是我第一次被困在此與WordPress ... 事情是這樣的:我想有一個自定義頁面模板顯示帖子環(WordPress的查詢)
- 一個「投資組合「頁面(設置爲首頁)顯示最後16個帖子的標籤組合
- 顯示最後XX(WP默認)帖子的」博客「頁面。
我讀了很多關於查詢,頭版,家庭等,我的結論是,我應該
- 構建兩頁
- 分配一個不同的模板,他們每個人,用定製設計
- 不爲此做一個custom query in my template;因爲它會打破 分頁:next_posts_link(),例如,將顯示 什麼也沒有,因爲它基於主查詢,而不是自定義查詢。
強烈建議您使用pre_get_posts過濾 代替query_posts(),並通過檢查is_main_query
所以,as recommanded in the codex改變主查詢,所以我決定過濾function.php中的pre_get_posts,而不是直接在投資組合模板中使用wp_query(...)。
add_action('pre_get_posts', 'cargo_portfolio');
然後我設置一些條件來檢查我在正確的網頁上:
function cargo_portfolio($query) {
if (!$query->is_main_query()) return;
if ($query->get('page_id') && ($query->get('page_id') == 128)){ //128 is my portfolio page
//edit query here
}
}
我不想用一個靜態的數字(128),所以我發現這個代替(對於投資組合代碼/頭版)
function cargo_portfolio($query) {
if (!$query->is_main_query()) return;
//check is static home page, since is_front_page() is not working yet at this level
if ($query->get('page_id') && ($query->get('page_id') == get_option('page_on_front'))){
//edit query here
}
}
我開始編輯與此代碼查詢:
$query->set('page_id', null);
$query->set('post_type', 'post');
$query->set('tag', 'portfolio');
$query->set('showposts', 16);
所以我結束了此功能:
function cargo_portfolio($query) {
if (!$query->is_main_query()) return;
//check is static home page, since is_front_page() is not working yet at this level
if ($query->get('page_id') && ($query->get('page_id') == get_option('page_on_front'))){
$query->set('page_id', null);
$query->set('post_type', 'post');
$query->set('tag', 'portfolio');
$query->set('showposts', 16);
}
}
WELL。感謝您閱讀... :)
這裏的問題是,我取消設置PAGE_ID,改變post_type瓦爾(因爲我想取個),而且它打破了查詢。現在我登陸404頁面。
有沒有人有一個很好的解決方案來實現這一目標?之前,我使用的是The Loops plugin,但是它自2年以來沒有更新過,並且已經損壞。 +:我確定應該有一個簡單的方法來做到這一點。
非常感謝!