2016-03-23 123 views
0

我發現這個tutorial創建所謂的假頁面,所以我可以動態創建帶有自定義字段的頁面。它工作得很好,但我需要調整它以適應我的需求。使用「假頁面」創建子頁面的子頁面

一樣,如果例如一本書有不同來源的評論:

mysite.com/books/to-kill-mockingbird/reviews/id-for-review

這意味着to-kill-mockingbird是支柱式的書,蛞蝓id-for-review是蛞蝓帖子類型評論。我可以很容易地通過刪除books/to-kill-mockingbird,並只有mysite.com/reviews/id-for-review,但我更喜歡有完整的網址。

有什麼建議嗎?

我試圖創建一個新的重寫規則,將id-for-review放入查詢變量。我已經爲此添加了$review-id

這裏是我試圖讓

if ($slug == 'reviews') { 
      $newrules['books/([^/]+)/' . $slug . '/([^/]+)/?'] = 'index.php?book=$matches[1]&fpage=' . $slug . '&review-id=$matches[2]'; 
      $newrules['books/([^/]+)/' . $slug . '/?$'] = 'index.php?book=$matches[1]&fpage=' . $slug; 
     } 
     else 
     { 
      $newrules['books/([^/]+)/' . $slug . '/?$'] = 'index.php?book=$matches[1]&fpage=' . $slug; 
     } 

我有一個模板命名爲單book.php中的規則,其中正在使用正確的模板:

$current_fp = get_query_var('fpage'); 
$review-id = get_query_var('review-id'); 

if (!$current_fp) { 
     get_template_part('single', 'book-index'); 
    } else if ($current_fp == 'books') { 
    if (!$review-id) { 
     get_template_part('single', 'book-reviews'); 
     } 
     else 
     { 
     get_template_part('single', 'book-review'); 
     } 
    }; 

如果我現在去/書籍/ to-kill-mockingbird/reviews /,它使用該模板列出所有評論。但是當我去審查時,它似乎使用標準的WordPress模板。

這裏是我的.htaccess:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 
+1

到目前爲止你做了什麼? – Ben

+0

@Ben我已經嘗試了很多東西,我認爲在問題中寫出它們會更容易,也更容易混淆。我試圖改變規則,但據我所知,它應該按照現在的方式工作。我試圖在模板中進行更改,但如果我在**/reviews/**之後有某個內容,則會出現「頁面未找到」錯誤,因此模板未被使用。 – janlindso

+0

那麼你可以告訴我們你的'.htaccess'嗎? – Ben

回答

0

好像我走近答案比我想象的,我的問題的一些調整和編輯之後。我的大部分代碼現在都是正確的。

以下是需要在教程示例中替換的規則。這放在foreach循環中,併爲「評論」創建兩條規則。

if ($slug == 'reviews') { 
      $newrules['books/([^/]+)/' . $slug . '/([^/]+)/?'] = 'index.php?book=$matches[1]&fpage=' . $slug . '&review-id=$matches[2]'; 
      $newrules['books/([^/]+)/' . $slug . '/?$'] = 'index.php?book=$matches[1]&fpage=' . $slug; 
     } 
     else 
     { 
      $newrules['books/([^/]+)/' . $slug . '/?$'] = 'index.php?book=$matches[1]&fpage=' . $slug; 
     } 

現在單books.php模板中,用它來得到正確的模板:

$current_fp = get_query_var('fpage'); 
$review-id = get_query_var('review-id'); 

if (!$current_fp) { 
     get_template_part('single', 'book-index'); 
    } else if ($current_fp == 'books') { 
    if (!$review-id) { 
     get_template_part('single', 'book-reviews'); 
     } 
     else 
     { 
     get_template_part('single', 'book-review'); 
     } 
    }; 

現在單書review.php模板裏面,你用它來得到這個職位數據根據從查詢V​​AR的毛坯:

$review_id = get_query_var('review-id'); 

$post = get_page_by_path($review_id, OBJECT, 'review') 

還記得去設置 - >永久鏈接並單擊保存當您更改規則,刷新將R ULES。