在两列中显示备注字段

时间:2012-10-10 作者:Devner

我正在使用comment\\u form();单回路中。php文件以显示注释表单。我有以下字段:姓名、电子邮件、网站、标题、评论。目前,所有这些表单字段都显示在彼此下方。我试图以这样的方式修改表单,以便所有文本框值都显示在左列中(&;只有文本区域显示在右列中。

到目前为止,我尝试使用comment\\u notes\\u after、comment\\u notes\\u before、comment\\u form\\u top等,但没有成功。那么我如何才能做到这一点(任何工作代码都将受到极大的赞赏)?

1 个回复
SO网友:fuxia

您需要的是两个新容器:一个用于单行字段,一个用于textarea。查看默认的注释表单,我们可以看到它们的开始和结束标记应该出现在哪里。为了便于查看,我添加了一些评论:

<form action="<?php echo site_url( \'/wp-comments-post.php\' ); ?>" method="post" id="<?php echo esc_attr( $args[\'id_form\'] ); ?>">
    <?php do_action( \'comment_form_top\' ); ?>
    <?php if ( is_user_logged_in() ) : ?>
        <?php echo apply_filters( \'comment_form_logged_in\', $args[\'logged_in_as\'], $commenter, $user_identity ); ?>
        <?php do_action( \'comment_form_logged_in_after\', $commenter, $user_identity ); ?>
    <?php else : ?>
        <?php echo $args[\'comment_notes_before\']; ?>
        <?php
        do_action( \'comment_form_before_fields\' );
        // Fields: author, email, url
        foreach ( (array) $args[\'fields\'] as $name => $field ) {
            echo apply_filters( "comment_form_field_{$name}", $field ) . "\\n";
        }
        do_action( \'comment_form_after_fields\' );
        ?>
    <?php endif; ?>
    <?php 
    // Field: textarea
    echo apply_filters( \'comment_form_field_comment\', $args[\'comment_field\'] ); ?>
    <?php echo $args[\'comment_notes_after\']; ?>
    <p class="form-submit">
        <input name="submit" type="submit" id="<?php echo esc_attr( $args[\'id_submit\'] ); ?>" value="<?php echo esc_attr( $args[\'label_submit\'] ); ?>" />
        <?php comment_id_fields( $post_id ); ?>
    </p>
    <?php do_action( \'comment_form\', $post_id ); ?>
</form>
我们需要第一个开始标签\'comment_form_top\'. 不迟,因为我们必须捕获登录用户的情况\'comment_form_after_fields\'.\'comment_form_field_comment\'. 这是一个过滤器,不是一个操作style 元素添加到标记中。在您的主题中,您应该将CSS放入样式表中。您应该使用自己选择的clearfix处理程序,而不是我在这里使用的标记。:)

add_action( \'comment_form_top\', \'wpse_67805_open_tag\' );
function wpse_67805_open_tag()
{
    ?>
<style>
@media screen and (min-width: 800px) {
    .wpse-67805-comment-fields,
    .logged-in-as {
        float: left;
        width: 280px;
    }
    .wpse-67805-comment-textarea {
        float: right;
        width: 280px;
    }
    .wpse-67805-textarea-after {
        clear: both;
    }
}
</style>
<div class="wpse-67805-comment-fields">
    <?php
    }
    add_action( \'comment_form_after_fields\', \'wpse_67805_open_close_tag\' );
    add_action( \'comment_form_logged_in_after\', \'wpse_67805_open_close_tag\' );
    function wpse_67805_open_close_tag()
    {
        ?></div><div class="wpse-67805-comment-textarea"><?php
    }
    add_filter( \'comment_form_field_comment\', \'wpse_67805_close_tag\' );
    function wpse_67805_close_tag( $textarea )
    {
        return "$textarea</div><div class=\'wpse-67805-textarea-after\'></div>";
    }

结果为2111

enter image description here

不太漂亮,你必须调整CSS。但现在应该清楚了一般的方法。

结束

相关推荐

Why are my comments closed?

我有一个简单的site 有几页加上blog. 出于某种原因,博客帖子声明comments are closed 我不知道为什么。我想打开所有博客帖子上的评论(而不是在页面上提供评论)。在“编辑帖子”屏幕中,“评论”部分仅表示“还没有评论”但并没有提供任何打开它们的方法。在“设置”>“讨论”中,我有以下内容:评论时,作者必须填写姓名和电子邮件。评论时,用户必须注册并登录。评论时,关闭对超过(14)天的文章的评论。自动关闭评论。启用线程化(嵌套)评论级别(5)深度。将评论分成每页有(50)条顶级评论的页