4

そのため、現在、ポッドを使用して、カスタムのもので満たされたログ用の個別のページを作成しています。

今、私はこのページのそれぞれにコメントシステムを使用したいと思います。

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

これはワードプレスで作成されたページではないため、単に追加するだけ<?php comments_template(); ?>では機能しません。

この問題を解決する方法はありますか?前もって感謝します

不明な点がある場合はコメントを残してください:)

4

5 に答える 5

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       
}

アップデート

こんなにバカだったなんて信じられない。以下は、outer内の現在のコードを置き換える必要があり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(); 

PS query_var nameoverを使用するpagename方が適していると思います。これは、スラッグの「パス」ではなく、スラッグを照会します。

また、リダイレクト先の名前redirect_toとURLの値を使用してフォーム内に入力を配置する、にフックされた関数でリダイレクトをフィルタリングしてcomment_post_redirect、正しいURLを返す必要があります。

于 2010-06-02T16:58:12.400 に答える
0

追加

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

wpファイルを含めます。これにより、必要なすべての関数/データが得られるはずです。

于 2010-05-26T15:00:20.810 に答える
0

ログデータを表示するページをワードプレスで作成できますか?このために新しいテンプレートが必要になる場合があります。WordPressには、コメントを接続するための何かがあります。

于 2010-06-03T23:57:52.043 に答える
0

wordpress-comment-partに新しいIDを指定するだけです-通常の投稿では決して届かないものから始めてください(100.000+はあなたのページです)

ワードプレスでそれが関数(saveComment ie)であるかどうかは正確にはわかりませんが、そうである場合は、カスタムIDを使用してページで使用してください。それでも、コメントフォームを自分で挿入する必要があります。

また、ニュースを取得するクエリを変更することを忘れないでください。100.000を超えるIDはエントリではありません。

または、IDが100.000未満の標準のWorpressのもの、またはページを表示する独自のテンプレートを作成することもできます。

要約すると、それはそれほど難しいことではないはずです。

ps:wordpress-loginだけを使用したい場合は、コメントシステムを使用するか、独自のシステムを作成して(1時間もの)、worpress-sessionを認証/使用します。

于 2010-06-06T16:55:26.017 に答える
0

これにはWordPressを使用する必要がありますか?そうでない場合は、このSOの質問の何かが役立つかもしれません:目立たない、自己ホスト型のコメントは、既存のWebページに配置するために機能します

于 2010-06-06T16:57:03.917 に答える