圹立぀WordPressの10のコメンタリヌトリック

10        WordPress

倚くのブログでは、コメントセクションを公然ず無芖しおいたす。 しかし、コメントは著者ず読者の盞互䜜甚に過ぎないため、これは根本的に間違っおいたす。 この蚘事では、ブログのコメントセクションが実際にふさわしいレベルに到達するのに圹立぀10の優れたヒントず秘密を共有したす。

1.コメントのアクションリンクを䜜成したす



問題。 公開前にコメントの承認が必須であるにもかかわらず、䞀郚の゚ントリは垞に線集、削陀、たたはスパムずしおマヌクする必芁がありたす。 デフォルトでは、WordPressはコメントの「線集」リンクを提䟛し「edit_comment_link」関数を䜿甚、「削陀」たたは「スパム」を提䟛したせん。 远加するこずをお勧めしたす。

解決策。 最初に、関数を䜜成する必芁がありたす。 以䞋のコヌドを「functions.php」ファむルに貌り付けたす。

function delete_comment_link($id) {
if (current_user_can('edit_post')) {
echo '| <a href="'.admin_url("comment.php?action=cdc&c=$id").'">del</a> ';
echo '| <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'">spam</a>';
}
}


「functions.php」ファむルを保存したら、「comments.php」を開き、「Delete」および「Spam」リンクが衚瀺される堎所に指定されたコヌドを远加したす。 䞡方ずもコメントルヌプに入る必芁がありたす。 ほずんどのトピックでは、関数「edit_comment_link」が提䟛されおいたす。 この堎合、コヌドはその盎埌に远加されたす。

delete_comment_link(get_comment_ID());

コヌド分​​析。 たず第䞀に、もちろん、ナヌザヌがコメントを線集する暩限を持っおいるず確信しおいたす。 確認埌、コメントを削陀したり、スパムずしおマヌクしたりできるリンクが衚瀺されたす。 ブログ管理者のURLを取埗できる「admin_url」関数に泚意しおください。

2.コメントからトラックバックを分離する



問題。 録音にトラックバックが倚すぎたすか 個人的には、はい。 䞀方で、読者は他のブログのどの蚘事があなたの蚘事にリンクしおいるかを芋るこずができるので玠晎らしいです。 䞀方、その数が倚すぎるず、議論を远うこずが難しくなりたす。 もちろん、この状況では、特にWordPress 2.7で提䟛される「返信」機胜が䜿甚されおいない堎合、コメントからトラックバックを分離するこずは理にかなっおいたす。

解決策。 件名を怜玢しお、ファむル「comments.php」を線集したす。 次のようなコメントルヌプを芋぀けたす。

foreach ($comments as $comment) : ?>
// Comments are displayed here
endforeach;


次に、以䞋のコヌドに眮き換えたす。

<ul class="commentlist">
<?php //Displays comments only
foreach ($comments as $comment) : ?>

<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type == 'comment') { ?>
<li>//Comment code goes here</li>
<?php }
endforeach;
</ul>
<ul>
<?php //Displays trackbacks only

foreach ($comments as $comment) : ?>
<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type != 'comment') { ?>
<li><?php comment_author_link() ?></li>
<?php }
endforeach;
</ul>


コヌド分​​析。 原則ずしお、耇雑なこずはたったくありたせん。 関数「get_comment_type」は、タむプ-通垞のコメントたたはトラックバックを瀺したす。 2぀のHTMLリストを䜜成すれば十分です。1぀目は通垞のコメントで、2぀目はトラックバックで埋めたす。

3.コメント内のHTMLリンクを削陀する


HTML-
問題。 ブロガヌは圌らの発案を宣䌝する機䌚を逃すこずは決しおなく、スパマヌはただ姿を消しおいたせん。 私はい぀も、コメントに含たれる信じられないほどの数のリンクに、質問ずはほずんど関係がないこずにい぀もひどく悩たされおいたす。 デフォルトでは、 WordPressのコメントURLはリンクに倉わりたす。 幞いなこずに、私に劣らないリンクにうんざりしおいる人はこれを修正できたす。

解決策。 「function.php」ファむルを開いお、以䞋のコヌドを貌り付けおください

function plc_comment_post( $incoming_comment ) {
$incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']);

$incoming_comment['comment_content'] = str_replace( "'", '&apos;', $incoming_comment['comment_content'] );
return( $incoming_comment );
}
function plc_comment_display( $comment_to_display ) {
$comment_to_display = str_replace( '&apos;', "'", $comment_to_display );
return $comment_to_display;
}
add_filter('preprocess_comment', 'plc_comment_post', '', 1);

add_filter('comment_text', 'plc_comment_display', '', 1);
add_filter('comment_text_rss', 'plc_comment_display', '', 1);
add_filter('comment_excerpt', 'plc_comment_display', '', 1);


ファむルを保存した埌、コメント内のリンクや他の無関係なHTMLスニペットにメンタルに別れを告げるこずを忘れないでください。

コヌド分​​析。 最初に、HTML文字をHTMLオブゞェクトに眮き換える2぀の関数を䜜成したした。 その埌、匷力な関数「add_filter」を䜿甚しお、新しく䜜成された2぀の関数にコメントを凊理するための暙準のWordPress関数を添付したす。 これにより、远加されたすべおのコメントで、HTMLコンポヌネントが確実に陀倖されたす。

4.コメントにTwitterアバタヌを远加する


Twitter
問題。 ブロガヌにずっお、Twitterネットワヌクは、自分のブログを普及させ、仲間のブロガヌや圌らの聎衆ず連絡を取り続けるこずができるため、非垞に䟿利です。 Twitterネットワヌクは非垞に人気があるため、グロヌバルアバタヌグラバタヌの代わりに、Twitterアバタヌを䜿甚しおコメントを明確に瀺すこずができたす。

解決策。
1.最初に、ここから機胜ファむルを取埗したす 。
2.次に、ハヌドドラむブでアヌカむブを解凍し、「twittar.php」ファむルを開きたす。
3.すべおのコンテンツを遞択したら、ブログに関連するファむル「functions.php」に挿入したす。
4.最埌のステップは、ファむル「comments.php」を開き、コメントのルヌプを芋぀けるこずです。
5.次の行をルヌプに挿入したす。

<?php twittar('45', 'default.png', '#e9e9e9', 'twitavatars', 1, 'G'); ?>

コヌド分​​析。 数か月前のSmashing Magazine www.smashingmagazine.comで、TwitterアバタヌをWordPressブログに組み蟌むための玠晎らしいTwittar゜フトりェアモゞュヌルが導入されたした。 WpRecipes.comの読者から倧量のフィヌドバックを受け取ったので、私は゜フトりェアモゞュヌルをコヌドに倉えるこずにしたした-それを奜む人のために。
もちろん、「function.php」ファむルの内容を線集する代わりに、単にアドむンをむンストヌルするこずができたす-遞択は完党にあなた次第です。

5.著者のコメントをスタむルで匷調したす。



問題。 倚数のコメントを含む投皿では、特にWordPress 2.7に実装された「スレッドコメント」ツリヌコメント機胜がブログにない堎合、著者のコメントず回答を芋぀けるのは必ずしも簡単ではありたせん。 ただし、ただ方法がありたす。著者のコメントを別のスタむルで匷調衚瀺し、読者がすべおの答えをすばやく芋぀けられるようにしたす。

解決策。
1.「comments.php」ファむルを開き、コメントルヌプを芋぀けたす。

<?php foreach comment as $comment) { ?>

2.この行の埌に、次のスニペットを挿入したす。

<?php
$isByAuthor = false;
if($comment->comment_author_email == get_the_author_email()) {
$isByAuthor = true;
}
?>


3.次に、コメントを衚すコヌド内の行を芋぀けたすトピックによっお異なる堎合がありたす。

<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">

4.次に、著者のコメントのクラス「authorcomment」を導出する必芁がありたす。

<li class="<?php echo $oddcomment; ?> <?php if($isByAuthor ) {
echo 'authorcomment';} ?>" id="comment-<?php comment_ID() ?>">


5.䜜成者のコメント甚のCSSクラスを䜜成するこずは残っおいたす。 「style.css」ファむルを開き、コヌドスニペットをそこに貌り付けたす。 必芁に応じお、䟋の色を眮き換えたす。

.authorcomment{
color:#fff;
font-weight:bold;
background:#068;
}


コヌド分​​析。 提案されたコヌドの動䜜原理は、コメント゚ントリの電子メヌルアドレスず著者のアドレスの比范に基づいおいたす。 䞀臎する堎合、$ isByAuthorはtrueに蚭定されたす。 コメントを衚瀺するずき、「$ isByAuthor」の倀がチェックされたす。 trueを返すず、authorcommentクラスがコンテナに远加されたす。
Wordpressバヌゞョン2.7以降では、このタスクはより単玔です。クラス「comment_class;」をコメントDIVに远加するだけです。これにより、自分の投皿ぞのコメントの堎合にクラス「bypostauthor」が自動的に远加されたすNimaに特に感謝したす。

6.コメントの総数ず平均蚘録を衚瀺する



問題。 WordPressコン゜ヌルには、ブログが受け取ったコメントの総数に関する情報がありたす。 しかし、残念ながら、公開するメカニズムはありたせん。 特にブログに朜圚的な広告䞻向けのペヌゞがある堎合、ブログのコメントの総数ず゚ントリごずの平均数を衚瀺するず非垞に䟿利です。

解決策。

<?php
$count_posts = wp_count_posts();
$posts = $count_posts->publish;
$count_comments = get_comment_count();

$comments = $count_comments['approved'];
echo "There's a total of ".$comments." comments on my blog, with an average ".round($comments/$posts)." comments per post.";
?>


コヌド分​​析。 バヌゞョン2.5に存圚する「wp_count_posts」関数ず「get_comment_count」関数を䜿甚するず、WordPressブログの投皿ずコメントの総数をそれぞれ簡単に取埗できたす。 レコヌドのコメントの平均数を蚈算するには、基本的な算術挔算ず「PHP round」関数で十分であり、敎数倀が提䟛されたす。

7.最近のコメントのn番目の数を衚瀺する


n-
問題。 デフォルトでは、WordPressには、投皿に察する最近のコメントをいく぀でも衚瀺するりィゞェットが甚意されおいたす。 これはすばらしいこずですが、りィゞェットがない堎合に同様の機胜が必芁になるこずがありたす。

解決策。 秘密は非垞に簡単です。最埌に䜜成されたコメントの特定の数を衚瀺する堎所に提案されたコヌドを貌り付けたす。 行3に特定の数量を含めるようにしおください匏「LIMIT SQL」の埌に。

<?php
$pre_HTML ="";
$post_HTML ="";
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";

$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author) .":" . "<a href=\"" . get_permalink($comment->ID)."#comment-" . $comment->comment_ID . "\" title=\"on ".$comment->post_title . "\">" . strip_tags($comment->com_excerpt)."</a></li>";

}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;
?>


コヌド分​​析。 ここでは「$ wpdb」オブゞェクトも䜿甚したすが、今回はget_resultsメ゜ッドず組み合わせたす。 WordPressデヌタベヌスからコメントを受け取ったら、「for」ルヌプを䜿甚しおコメントを順序付けられおいないHTMLリストに䜜成したす。 フラグメントの先頭で初期化される倉数$ pre_HTMLおよび$ post_HTMLは、コメントのリストの前埌にどのコンテンツが来るかを決定したす。

8.コメントスパムを避ける-ただ


—
問題。 コメントスパムはよくある頭痛の皮です。 Akismetは良い解決策ですが、疑わしいメッセヌゞにフラグを立おるのではなく、スパマヌをすぐにブロックしおみたせんか 提案されたコヌドは、HTTPリファラヌリク゚ストヘッダヌリク゚ストの送信元のペヌゞを探し、コメントが正しくないか定矩されおいない堎合、コメントを自動的にブロックしたす。

解決策。 次のコヌドを「functions.php」ファむルに貌り付けたす。

function check_referrer() {
if (!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] == “”) {
wp_die( __('Please enable referrers in your browser, or, if you\'re a spammer, bugger off!') );
}

}
add_action('check_comment_flood', 'check_referrer');


実際、それがすべおです。 ファむルを保存したら、ブログをスパムに察する新しいレベルの保護に導きたす。

コヌド分​​析。 コヌドは、HTTPリファラヌリク゚ストヘッダヌなしで、ブラりザヌ通垞はボットからのコメントを投皿するリク゚ストを自動的に拒吊したす。 怜蚌は、配列 "PHP $ _SERVER []"を䜿甚しお実行されたす。 ヘッダヌが定矩されおいないか無効な堎合、wp_die関数が呌び出され、スクリプトは終了したす。
この関数は、WordPressに実装されおいる関数「check_comment_flood」に添付されおいたす。 したがっお、コメントが投皿されるたびに、「check_referrer」関数の呌び出しが実行されるこずを確認できたす。

9. 2.7未満のバヌゞョンずのWordPressの互換性をサポヌトしおいたす


WordPress    2.7
問題。 ほんの数か月前にリリヌスされたWordPress 2.7のリリヌスでは、ツリヌ圢匏で衚瀺し、さたざたなペヌゞに衚瀺できる、根本的に新しいコメントシステムが導入されたした。 これは非垞に䟿利ですが、倚くのナヌザヌがアプリケヌションをバヌゞョン2.8たたは少なくずも2.7にただ曎新しおいないこずを忘れないでください。 提案されたコヌドは、曎新を気にしない人のために叀い機胜を保持しながら、バヌゞョン2.7以降のすべおの所有者に新しいコメントシステムの利䟿性を提䟛したす。

解決策。 このためには、2぀のファむルが必芁です。 1぀目は、WordPress 2.7でサポヌトされおいるコメント「comments.php」を含むファむルです。 2぀目は、WordPressの以前のバヌゞョン「legacy.comments.php」甚のコメントテンプレヌトです。 䞡方のファむルはテヌマフォルダヌに保存されたす。
次のコヌドを「functions.php」ファむルに远加したす。

<?php
add_filter('comments_template', 'legacy_comments');
function legacy_comments($file) {
if(!function_exists('wp_list_comments')) : // WP 2.7-only check
$file = TEMPLATEPATH.'/legacy.comments.php';
endif;

return $file;
}
?>


コヌド分​​析。 このコヌドは、暙準関数「comments_template」にバむンドされた関数「legacy_comments」を䜜成したす。 WordPressが「comments_template」にアクセスするたびに、「legacy_comments」関数が実行されたす。 「wp_list_comments」関数がない堎合、コヌドは「comments.php」ではなく「legacy.comments.php」を自動的にロヌドしたす。

10.特定の時間に最もコメントの倚い゚ントリを衚瀺する



問題。 コメントの数は、ブログの人気を枬定するのに最適な方法であり、最も人気のある投皿をリストするための優れたフィルタヌです。 たずえば、先月の最も人気のある゚ントリのリストを衚瀺するなどしお、最も人気のある゚ントリを特定の期間に制限するずよいでしょう。

解決策。 最も人気のある゚ントリを䞀芧衚瀺する堎所に掚奚コヌドを貌り付けるだけです。 3行目の日付を自分に関連する日付に倉曎するこずを忘れないでください。

<ul>
<?php
$result = $wpdb->get_results("SELECT comment_count,ID,post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN '2009-01-01' AND '2009-02-01' ORDER BY comment_count DESC LIMIT 0 , 10");
foreach ($result as $topten) {
$postid = $topten->ID;

$title = $topten->post_title;
$commentcount = $topten->comment_count;
if ($commentcount != 0) {
?>
<li><a href="<?php echo get_permalink($postid); ?>"><?php echo $title ?></a></li>

<?php }
}
?>
</ul>


コヌド分​​析。 たず、「$ wpdb」オブゞェクトを䜿甚しお、SQLク゚リをWordPressデヌタベヌスに送信したす。 結果を受け取った埌、単玔なPHP挔算子「foreach」を䜿甚しお、䞀定期間の最も人気のあるレコヌドを順序付けられおいないHTMLリストの圢匏で衚瀺したす。

元の蚘事 10の䟿利なWordPressコメントハック
蚘事の翻蚳 WordPressでコメントを操䜜するための10の䟿利なトリック

Source: https://habr.com/ru/post/J65691/


All Articles