コメントの「返信」リンクについて

このトピックには2件の返信が含まれ、1人の参加者がいます。5 ヶ月、 1 週前 ひまあーと さんが最後の更新を行いました。

  • 投稿者
    投稿
  • #59623

    ひまあーと

    どんなテーマでも共通の動作だとは知りつつ長らく「Simplicity」を使用させていただいているので質問させていただきました。

    サイトでは「login with ajax」というプラグインを使ってフロントエンドから新規登録とログインの操作をするようにしています(厳密に言うと新規登録後、パスワード変更のため一旦バックエンドのパスワード確認画面を表示→そこからログイン後は通常バックエンドのプロフィール編集画面に遷移されるのですが、プロフィール編集が必要ないため別のプラグインでトップページへリダイレクトさせています)。

    その前提で、コメントを登録ユーザーのみに設定して簡易掲示板的に使用しようと考えています。

    新規にコメントをする場合にはログインの処理を「login with ajax」のログイン画面でそのままフロントエンドで処理させる(コメントするにはログインが必要ですなどの文言は非表示にして対応)ようにして実装できたのですが、コメント一覧に対して返信をする場合、ログインしていないと「ログインして返信する」というリンクが表示されます。

    このリンクをクリックするとバックエンドのログイン画面が表示され、ログインすると元の記事の返信窓が表示されるという動きは分かっているのですが、前述したリダイレクトプラグインがあるためトップページへリダイレクトされてしまいます。

    これではユーザーの方が使いにくいため、できればログインしている状態のときのみ「返信」リンクが表示されるようにしたいと考えております。

    いろいろ調べましたが解決策が見つからず、最終的にはWordpress本体の翻訳ファイル内で「ログインして返信する」という文字列を空白文字(半角スペースなど)にしてリンクを気づきにくくするという結論に達したのですが、できればログインしている場合のみ「返信」というリンクが表示されるようにしたいのです。

    分かりにくい説明で申し訳ありませんがお分かりになる方、よろしくお願いします。

  • #59625

    Akira

    私がぱっと思いついたのは、 CSS の方法とフックを用いた方法の 2 つです。

    CSS の場合には、 style.css に下記の CSS を追加します。最初は「返信」を非表示にしておき、ログインユーザーには表示する内容です。

    .reply {
      visibility: hidden;
    }
    
    .logged-in .reply {
      visibility: visible;
    }

    フックを用いた方法は、 function.php に下記のコードを追加します。ログインしていないユーザーには、「返信」を出力しない内容です。

    add_filter( 'comment_reply_link', function( $args_before_link_args_after, $args, $comment, $post ) { 
        if( is_user_logged_in() ) {
            return $args_before_link_args_after;
        } else {
            return null; 
        }
    }, 10, 4 );

    Simplicity デフォルトのコメントリストのスタイルで試したみたところ、私は CSS の方法が好みでした。

    というのも、フックを用いた方法では、ログインしていないユーザーには「返信」が丸ごと出力されません。なので、ログインユーザーとログインしていないユーザーとで、若干異なるコメントリストのレイアウトになってしまいます(ログインしていないユーザーには、コメントリスト間の余白が少し詰まって表示される)。

  • #59626

    ひまあーと

    ありがとうございます。早速試してみました。

    どちらもきちんと動作しました。

    私もどちらかというとCSSの方がいいと思うのでそちらを使わせていただきます。

    ありがとうございました

トピック「コメントの「返信」リンクについて」への新規返信追加は締め切られています。

スポンサーリンク
アドセンス(大)
アドセンス(大)