質問: $comment_id"<view single comment</a>
回答: 他のものより洗練されたもの、そして実際には他のプラグインと競合する可能性のあるものすべてを実現するには、さまざまな方法がありますが、これらをすべて無視するのは、あなたが求めた方法に近い方法です。 :)このソリューションは次のようなurlフォーマットをサポートします。ここで%comment_id%はwp_commentsテーブルからのコメントの数値idです。 http://example.com/comments/%comment_id%/ まず、次のコードを使ってurlの書き換えを設定する必要があります。うまくいけば、それは合理的に自己説明的ですが頼むことを躊躇しないでください:$wp->add_query_var('comment_id'); // add the "behind-the-scenes" query variable that wordpress will use $wp_rewrite->add_rewrite_tag('%comment_id%', '([0-9]+)','comment_id='); // define a rewrite tag to match that assigns to the query var $wp_rewrite->add_permastruct('comment-page', 'comments/%comment_id%'); // define a url pattern to match the rewrite tag. また、ルールをフラッシュするにはプラグインアクティベーションフックでこのコードを呼び出す必要があります。または、管理コンソールのsettings> permalinksにパーマリンクを保存することもできます。 /設定エリア:global $wp_rewrite; $wp_rewrite->flush_rules(false); 次にparse_queryフィルタフックを追加します。これはwordpressがクエリを調べた後に呼び出されます。追加したcomment_id query_varが設定されているかどうかを確認し、設定されている場合は、目的のurlにアクセスしているかどうかを確認します。そうであるならば、それはコメントに関連しているポストに'p'パラメータ(ポストidに設定されるべきである)を設定するためにget_comment()を使用してコメント配列をロードします。このようにwordpressが少なくともに関係なく実行されるというクエリを実行すると、以下のcomment.phpテーマテンプレートファイルに必要なものがロードされ、あなたが勝ちました後で必要になったときに別のクエリを実行する必要があります。このコードはまた奇妙な名前のcaller_get_postsオプションを使ってスティッキーポストを無視するようにwordpressに指示します。add_filter( 'parse_query', 'my_parse_query' ); function my_parse_query( $query ) { global $wp; if (isset($query->query['comment_id']) && substr($wp->request,0,9)=='comments/') { $comment = get_comment($query->query['comment_id']); $query->query_vars['p'] = $comment->comment_post_id; // causes the comment's post to be loaded by the query. $query->query_vars['caller_get_posts'] = true; // keeps sticky posts from invading into the top of our query. } } それでも、/wp-includes/template-loader.phpフィルタを使ってtemplate_includeにコードをフックする必要があります。これはwordpressがクエリを調べてコメントの投稿を読み込んだ後に呼び出されます。ここでは、最初にquery_varのcomment_idと、必要なurlをもう一度確認します。もしそうなら、/index.phpテンプレートページをテーマテンプレートファイルである/comment.phpに置き換えます。add_filter( 'template_include', 'my_template_include' ); function my_template_include( $template ) { global $wp,$wp_query; if (isset($wp_query->query['comment_id']) && substr($wp->request,0,9)=='comments/') { $template = str_replace('/index.php','/comment.php',$template); } return $template; } 最後に、/comment.phpを呼び出すことを選択したテーマテンプレートファイルを作成する必要があります。それがあなたのテーマなので、あなたはそれをあなたが望むように見せたいと思うでしょうが、ここにあなたが始めるための例があります:<?php /* * file: /wp-content/themes/my-theme/comment.php */ global $wp_query,$post; $comment_id = $wp_query->query['comment_id']; $comment = get_comment($comment_id); $permalink = get_permalink($post->id); get_header(); ?> <div id="container"> <div id="comment-<?php echo $comment_id; ?>" class="comment"> <p>comment by: <span class="comment-author"> <a href="<?php echo $comment->comment_author_url; ?>"><?php echo $comment->comment_author; ?></a></span> on <span class="comment-date"><?php echo date("d m js y", strtotime($comment->comment_date)); ?></span> at <span class="comment-time"><?php echo date("h:ia", strtotime($comment->comment_date)); ?></span> </p> <p>about: <a href="<?php echo $permalink; ?>"><?php echo $post->post_title; ?></a></p> <blockquote><?php echo $comment->comment_content; ?></blockquote> </div> </div> <?php get_sidebar(); get_footer(); 質問は?聞いてください。p.s上記で説明したコードはすべて、テーマのfunctions.phpファイルおよび/または独自のプラグインに入れることができます。注意しなければならないのは、url書き換えフラッシュルールをプラグインアクティベーションフックに含める場合です。代わりに、管理コンソールのパーマリンクセクションで手動でフラッシュします。アクティベーションフックの登録方法については説明しませんでしたが、もっと詳しく知りたい場合はこちら をご覧ください 。