web-dev-qa-db-ja.com

コメントフィールドの順序を変更する

最初にコメントフィールドを表示し、次に名前/ Eメール/ Webサイトフィールドを表示する方法はありますか?使ってます

<?php comment_form( ); ?>

私のテーマで。私はCSSソリューションを探していません。

1
Florian

私が始めようとしている場所のいくつかのゆるい実装。フック'comment_form_default_fields''comment_form_defaults'、および'comment_form_{location}'フックは有望に見えます。 comment-template.phpの1569行目がフィールドを処理しており、1575行目がメインフィールドを処理している場合、wordpressを「トリック」してコメントフィールドを先頭に置くことができるかもしれません。ちょっとした手間と完璧になるための時間がたくさんあるので、CSSはおそらく残念ながらこれに取り組むための最良の方法です。

0
mor7ifer

これはそれを行うための最も賢明なWordpressの方法ではないかもしれませんが、私は他の解決策を見つけることができませんでした。

実際のコメントフォームがレンダリングされる場所を探しに行きました。私はそれを見つけました:

/wp-includes/comment-template.php

検索する:

function comment_form(...

これはコメントフォームを作成し、あなたが設定するかもしれないすべてのフィルタを適用する関数です。

それで、私は先に進んでその関数を私のテーマのfunctions.phpにコピーし、それを次のような違う名前に変更しました:

function mytheme_comment_form(...

それから私のテンプレートで私は<?php mytheme_comment_form() ?>を呼び出します

私自身の機能を使えば、フィールドを切り替えることができますが、それらは欲しいのです。

comment_form()を使ってプレイした回数が多いほど、実際にその意味がわかりません。 comments.phpのhtmlの形を元々のようにしたほうが賢いように思えました。それは私が望んでいたように簡単に動かすことができたからです。

とにかく、それは可能な解決策です、それが何かを壊すことになるかどうかはわかりませんが、私はそれがかなり健全であると思います、そして私はそれで走るつもりです!

1
Ben

wp_list_commentsの行をこれに変更する必要があります。

<?php wp_list_comments('reverse_top_level=DESC'); ?>

これは以下からも制御できます。[管理]> [設定]> [ディスカッション]

0
Sagive SEO