/

エラー回避方法も!コメント時に画像も付けるようにするならComment Imageが便利!

エラー回避方法も!コメント時に画像も付けるようにするならComment Imageが便利!

WordPressでコメントに画像つけることができるようにするプラグインないかなと探すと一番候補として出てくるのが「Comment Image」です。

確かに便利で設定項目も少なくすぐに使い始めることができるようになります。

ただ、めっちゃ警告出してました。。。

そこで今回は基本的な使い方に加えてエラーの回避方法も紹介します。

Comment Imageの使い方

まずはプラグインをダウンロードしてください。

公式に登録されていますが、プラグイン名に「Comment Image」と入力してもなかなか出てこないので、上のリンクからダウンロードしてアップロードするのが手っ取り早いです。

有効化すると管理画面:「設定」⇒「Comment Image」という項目が追加されています。こちらを開いて設定をしましょう。

  • Image selection field・・・画像選択ボタンの挿入方法を選べます。
  • Image field label・・・画像選択ボタンの補助テキストを入れることができます。
  • Thumbnail width・・・サムネイル(コメント内に表示される画像)の大きさを選ぶことができます。

Image selection field では3種類方法が用意されており、「Inject via WordPress hook」「Inject via javaScript」「Do not inject, manually added」とあります。

Inject via WordPress hook」ではワードプレスのフックを利用して画像選択ボタンが挿入されます。挿入される場所はコメントボタンの下です。この方法が一番簡単で問題も少ない方法です。

Inject via javaScrpit」ではjavaScrpitを利用して画像選択ボタンが挿入されます。挿入される場所はコメント文入力エリアの下です。サイトの速度アップなどでOptimize系のプラグインを利用している場合は表示に問題がないか確認してみてください。

Do not inject, manually added」では自動的に挿入されません。自身でphpファイル内に「<input type =”file” name =”image” />」を追加する必要があります。「comment_form_field」をフックして並び順を変えるついでに挿入するのが簡単だと思います。その場合、ログインユーザーに対しての表示に配慮が必要です。

サムネイルの大きさはコメント内の表示と管理画面のコメントで表示される際に使用される大きさです。

また、画像はメディアライブラリに保存されているわけではなく、別のフォルダ(wp-content/comment-image)に格納されています。コメントを削除すると同時に削除される仕組みになっています。

画像用のプラグインなどで画像の最適化を行っている場合、デフォルトでは対象にならないと思われます。

エラー回避

Comment imageは残念ながら開発が止まっているようです。そのため、いくつかエラーが出てくるかもしれません。

ここでは確認できたエラーの対処方法を記していきます。

PHPファイルを扱える人のみ対処してください。

// $_GET['page']の対処 plugins.php 37 issetでチェック追加
if ( isset( $_GET['page'] ) && strpos($_GET['page'], 'comment-image/') === 0)

// $options['image']の対処 plugins.php 各所 issetでチェック
$images = isset( $options['images'] ) ? $options['images'] : 0;

// comment_textのフック部分 plugins.php 43~
// get_comment_ID()で警告の可能性があるので、第二引数のWP_Commentインスタンスをチェック
add_filter('comment_text', 'commentimage_comment_text',  10, 2);
function commentimage_comment_text( $comment_text, $wp_comment )
{
    $options = get_option('commentimage');
    $id = $wp_comment !== null ? $wp_comment->comment_ID : 0;

    $images = isset( $options['images'] ) ? $options['images'] : '';
    if (!isset($images) || !is_numeric($images)) $images = 1;

    $url = get_option('siteurl');
    for ($i=0; $i<$images; $i++)
    {
        if (file_exists(ABSPATH . 'wp-content/comment-image/' . $id . ($i==0?'':('-'.$i)) . '-tn.jpg'))
        {
            $comment_text .= '<p><a href="' . $url . '/wp-content/comment-image/' . commentimage_find_original($id, $i) . '"><img src="' . $url . '/wp-content/comment-image/' . $id . ($i==0?'':('-'.$i)) . '-tn.jpg"/></a></p>';
        }
    }
    return $comment_text;
}

上記のような感じで対処しておけば問題なく利用できました。

警告が出て使うの迷った人は一度こちらを考えてみるといいでしょう。また、プラグイン自体がかなり軽量なので、中身を理解してテーマのfunctions.phpに必要な形で実装するのも良いかと思います。