WordPress のトラックバック送信元を自分好みに表示

以下の内容はピンバックを受信したとき・コメントとトラックバック又はピンバックが両方存在する場合にうまく表示できない可能性があります。
詳細: WordPress のトラックバックとピンバックの違い

WordPress のコメント表示機能に不満があってコメントとトラックバックを分離して表示させたのですが、受信したトラックバックを表示する部分で使える独自タグがイマイチだったので頑張ってみました。
デフォルトだとコメント本文に送信元の記事タイトルが含まれているからそれを削除するのと、タイトルだけを抽出したもの、送信元の記事 URL を抽出したもの。

PHP たーのしー!

トラックバック送信元の記事タイトルを取得

まずは記事タイトルの取得から。やったことはコード中のコメントの通りですが、かなり Google 先生のお世話になりました。
参考: preg_match での抜き出し
下記からphpの正規表現で文字だけ抜き出す方法を教えて下さい。文字列は<>?などエスケープされるもの以外は何でも入ります。 <tr><td><span id="test"><a href="index.htm".. – 人力検索はてな

function p15GetTrackbackTitle() {
	$html = get_comment_text();
	// コメント全文から <strong>?</strong> を抜き出す
	preg_match('@(<strong>)([^<>]+?)</strong>@', $html, $title1);
	// HTML タグを除去
	$title2 = strip_tags($title1[0]);
	// 後ろから 3 バイトを削除 (... を削除)
	$title = substr($title2, 0, -3);
	return $title;
}

コード中の < とか表示がおかしかったのを直しました(´・ω・`)

トラックバック送信元の記事 URL を取得

最初のやつで HTML タグを除去する関数を知ったのでこれは簡単でした(`・ω・´)

function p15GetTrackbackUrl() {
	$html = get_comment_author_url();
	// 送信元記事 URL から HTML タグを除去
	$url = strip_tags($html);
	return $url;
}

トラックバック全文からタイトルを削除

最初に作ったやつを再利用して、タイトル部分のバイト数を測定して + 3 してるのは削除した … の分 3 バイトです。

function p15GetTrackbackExcerpt() {
	// タイトル部分が何バイトかを測定
	$text1 = strlen(p15GetTrackbackTitle());
	// 測定したバイト分を削除 (測定したバイトの次の文字から表示)
	$text = substr(get_comment_excerpt(), ($text1)+3);
	return $text;
}

表示される内容

例えばこの記事の情報を取得したとすると以下のようになります。

  • p15GetTrackbackTitle()
    WordPress のトラックバック送信元を自分好みに表示
  • p15GetTrackbackUrl()
    http://p15.jp/2008/04/15/234702
  • p15GetTrackbackExcerpt()
    WordPress のコメント表示機能に不満があってコメントとトラックバックを分離して表示させたのですが、受信したトラックバックを表示する部分で使える独自タグがイマイチだったので頑張ってみました。(?以下指定の文字数まで)

PHP はすごいね!たのしーね!
でもドス赤いやつは本日中に間に合いそうにありません(´・ω・`)
9 割できてるから待ってて!トルさん!

「WordPress のトラックバック送信元を自分好みに表示」への2件のフィードバック

  1. あれれー、何のことかと思ったらなぜか動かなくなってる(´・ω・`)
    どうやら新しいやつ作ってて古い方の footer.php を上書きしたらしい。直したありがとう!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です