2010-05-26 54 views
4

所以目前我使用pods爲日誌創建一些單獨的頁面,填充自定義的東西。WordPress的 - 在頁面和文章以外使用評論系統

現在我想用評論系統對每個這類網頁例如: -

mydomain.com/podpages/page1 
mydomain.com/podpages/page2 
mydomain.com/podpages/page3 

這是與WordPress所以只添加<?php comments_template(); ?>不工作創建頁。

任何想法如何解決這個問題? 由於事先

請發表評論,如果有任何不明白:)

+3

據我所知,這是不能做到的。它與Wordpress將數據存儲在數據庫中的方式有​​關。你正在使用錯誤的工具來完成這項工作。嘗試使用Disqus或Echo。 – mattbasta 2010-05-26 17:25:18

+0

沒有機會。我在這個博客中的評論系統被修改,所以我必須使用wordpress的正常評論系統 – choise 2010-05-31 07:00:58

+0

我沒有看到任何理由堅持評論的wordpress系統,如果這些是在博客的單獨頁面上的評論。如果你想對用戶的WP數據庫進行認證,這是完全不同的問題,可以輕鬆完成。您可以自己訂購新的評論系統或程序。 – 2010-05-31 11:11:04

回答

11

當評論存儲在WordPress數據庫中時,評論所涉及的帖子(或頁面)的ID也被存儲。

麻煩的是,你試圖用WordPress保存評論,但對於一個頁面,它實際上並不知道知道左右。

那麼,怎麼樣我們創建了一個的WordPress頁每個真正頁,而僅僅是作爲一個表示,讓你真正的網頁和WordPress有一個共同點相互合作。

因此,這裏的計劃是;

  • 將WordPress加載到每個「真實」頁面的背景中。
  • 看看一個WordPress頁面表示已經存在的「真實」頁面
  • 如果它沒有,創建它,然後有
  • WordPress的伎倆思成我們實際上觀察表示
  • 進關於使用所有WP的函數和'模板標籤',就像你通常使用的那樣

這段代碼應該在模板文件開始的某個地方用來渲染你的'真實'頁面;

include ('../path/to/wp-load.php'); 

// remove query string from request 
$request = preg_replace('#\?.*$#', '', $_SERVER['REQUEST_URI']); 

// try and get the page name from the URI 
preg_match('#podpages/([a-z0-9_-]+)#', $matches); 

if ($matches && isset($matches[1])) { 
    $pagename = $matches[1]; 

    // try and find the WP representation page 
    $query = new WP_Query(array('pagename' => $pagename)); 

    if (!$query->have_posts()) { 
     // no WP page exists yet, so create one 
     $id = wp_insert_post(array(
      'post_title' => $pagename, 
      'post_type' => 'page', 
      'post_status' => 'publish', 
      'post_name' => $pagename 
     )); 

     if (!$id) 
      do_something(); // something went wrong 
    } 

    // this sets up the main WordPress query 
    // from now on, WordPress thinks you're viewing the representation page  
} 

UPDATE

我簡直不敢相信我是這個愚蠢的。下面應該替換外面的當前代碼if;

// try and find the WP representation page - post_type IS required 
$query = new WP_Query(array('name' => $pagename, 'post_type' => 'page')); 

if (!$query->have_posts()) { 
    // no WP page exists yet, so create one 
    $id = wp_insert_post(array(
     'post_title' => $pagename, 
     'post_type' => 'page', 
     'post_status' => 'publish', 
     'post_name' => $pagename, 
     'post_author' => 1, // failsafe 
     'post_content' => 'wp_insert_post needs content to complete' 
    )); 
} 

// this sets up the main WordPress query 
// from now on, WordPress thinks you're viewing the representation page 
// post_type is a must! 
wp(array('name' => $pagename, 'post_type' => 'page')); 

// set up post 
the_post(); 

P.S我認爲使用query_var namepagename更適合 - 它查詢蛞蝓,而不是塞「路徑」。

您還需要要麼將與名稱redirect_to形式和URL的值裏面輸入你想重定向到,,過濾器掛在comment_post_redirect功能重定向,返回正確的網址。

+0

,但評論模板不會顯示。我想wp(array('pagename'=> $ pagename));仍然沒有影響:( – choise 2010-06-10 12:02:12

+0

好吧,傾銷$ wp說pagename已設置,但評論仍然沒有顯示出來,其他東西像永久鏈接現在應該工作,但他們不,或? – choise 2010-06-10 12:40:19

+0

'post_type'=>'post'正在工作更好一些,但是將它們設置爲頁面 – choise 2010-06-10 12:54:05

0

添加

require('/path/to/wp-blog-header.php'); 

包括可溼性粉劑文件。這應該會給你所需要的所有功能/數據。

+0

是的,我做到了。但comments_template();通常只能在單個博客或頁面帖子內工作。 – choise 2010-05-26 15:11:45

+0

true true,您可能需要將每個頁面插入到您的張貼表中,並調整comments_table函數以爲其添加頁面的頁面ID爲 – Galen 2010-05-26 16:16:29

0

你可以在wordpress中創建頁面來顯示你的日誌數據嗎?你可能需要一個新的模板。然後WordPress會有一些東西來連接評論。

0

只是一個新的ID提供WordPress的註釋部分 - 開始與一些你平常的職位將永遠達不到(100.000+是你的網頁,IE)

我不知道到底是否在WordPress是一個功能(saveComment ie),但如果是這樣,只需在他的自定義ID的頁面中使用它。 但您必須自己插入評論表單。

並且不要忘記修改獲取新聞的查詢,即超過100.000的ID不是條目。

或者您可以編寫自己的模板來顯示ID爲< 100.000的標準-Winter按鈕,否則您的頁面。

總結起來,應該不是很困難。

p.s言:如果你只是想使用wordpress登錄,然後使用任何評論系統或使自己的(這是一個小時的事情)和認證/使用worpress會話。