Wordpress - 在页面和帖子之外使用评论系统

时间:2010-05-26 14:32:52

标签: php wordpress comments podscms

所以目前我正在使用pods为日志创建一些单独的页面,并填充自定义内容。

现在我想对每个页面使用评论系统,例如:

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

这是使用wordpress创建的页面,因此只是添加<?php comments_template(); ?>无效。

任何想法如何解决这个问题? 提前谢谢

如果不清楚,请发表评论:)

5 个答案:

答案 0 :(得分: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       
}

更新

我无法相信我是这个愚蠢的人。下面应该替换外部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我认为在name上使用query_var pagename更适合 - 它会查询slug,而不是slug'path'。

您还需要在名称为redirect_to的表单中放置一个输入,并将您要重定向到的网址的值设置为,过滤重定向一个挂钩到comment_post_redirect的函数,返回正确的URL。

答案 1 :(得分:0)

添加

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

包含wp文件。这应该为您提供所需的所有功能/数据。

答案 2 :(得分:0)

您可以在wordpress中创建显示日志数据的页面吗?您可能需要一个新模板。然后,WordPress将有一些东西将评论连接到。

答案 3 :(得分:0)

只需提供带有新ID的wordpress-comment-part - 从您通常的帖子永远不会到达的内容开始(100.000+是您的页面,即。)

我不确切地知道在wordpress中它是否是一个函数(saveComment ie),但如果是这样的话,只需在你的页面中使用自定义ID即可。 但您必须自己插入评论表格。

不要忘记修改获取新闻的查询 - 超过100.000的ID不是条目。

或者您可以编写自己的模板,显示ID为&lt;标准Worpress-stuff; 100.000,或者你的页面。

总结一下,这应该不是很困难。

p.s。:如果您只想使用wordpress-login,那么请使用任何评论系统或制作您自己的(这是1小时)并验证/使用worpress-session。

答案 4 :(得分:0)

你需要使用WordPress吗?如果没有,也许这个SO问题中的某些内容有助于:Unobtrusive, self-hosted comments function to put onto existing web pages