为什么样式注释如此复杂?

时间:2013-04-27 作者:Jack

我一直在完全从头开始构建一个主题,经过一个简单的过程,到目前为止,我已经得到了评论。php文件。再说一次,没有什么特别之处,直到:

$callback (string)(可选)用于打开和显示每个注释的自定义函数的名称。使用此选项将调用您的自定义函数来显示每个注释,从而绕过这方面的所有内部WordPress功能。用于自定义注释显示,以对HTML布局进行极端更改。请注意,回调必须包括打开<div>, <ol>, 或<ul> 标记(与样式参数相对应),但不是结束标记。WordPress将自动提供结束标记,或者您可以使用结束回调覆盖此默认值。回调与结束回调是分开的,以便于分层注释。小心使用。

为什么这么疯狂?为什么没有办法发表评论呢。用于每个注释的php模板?(如果有,请务必让我知道)

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

如果您喜欢简单的模板文件,也可以通过自定义注释回调来实现。

呼叫wp_list_comments() 使用自定义回调处理程序:

wp_list_comments( 
    array( 
        \'callback\' => \'custom_comment_callback\', 
        \'style\'    => \'ol\' 
    ) 
);
现在让回调函数变得非常简单:

function custom_comment_callback( $comment, $args, $depth )
{
    include \'comment-template.php\';
}
现在你可以使用comment-template.php 与任何其他模板一样。

下面是一个简单的示例,向您展示哪些变量可用:

<?php # -*- coding: utf-8 -*-
print \'<pre>$comment = \' . esc_html( var_export( $comment, TRUE ) ) . \'</pre>\';
print \'<pre>$args = \'    . esc_html( var_export( $args, TRUE ) )    . \'</pre>\';
print \'<pre>$depth = \'   . esc_html( var_export( $depth, TRUE ) )   . \'</pre>\';
您还可以使用现有回调处理程序的函数体,如此处的“212”中的函数体,它将起作用:

<?php # -*- coding: utf-8 -*-
$GLOBALS[\'comment\'] = $comment;
switch ( $comment->comment_type ) :
case \'pingback\' :
case \'trackback\' :
    // Display trackbacks differently than normal comments.
    ?>
    <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
        <p><?php _e( \'Pingback:\', \'twentytwelve\' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( \'(Edit)\', \'twentytwelve\' ), \'<span class="edit-link">\', \'</span>\' ); ?></p>
    <?php
            break;
        default :
        // Proceed with normal comments.
        global $post;
    ?>
    <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
        <article id="comment-<?php comment_ID(); ?>" class="comment">
            <header class="comment-meta comment-author vcard">
                <?php
                    echo get_avatar( $comment, 44 );
                    printf( \'<cite class="fn">%1$s %2$s</cite>\',
                        get_comment_author_link(),
                        // If current post author is also comment author, make it known visually.
                        ( $comment->user_id === $post->post_author ) ? \'<span> \' . __( \'Post author\', \'twentytwelve\' ) . \'</span>\' : \'\'
                    );
                    printf( \'<a href="%1$s"><time datetime="%2$s">%3$s</time></a>\',
                        esc_url( get_comment_link( $comment->comment_ID ) ),
                        get_comment_time( \'c\' ),
                        /* translators: 1: date, 2: time */
                        sprintf( __( \'%1$s at %2$s\', \'twentytwelve\' ), get_comment_date(), get_comment_time() )
                    );
                ?>
            </header><!-- .comment-meta -->

            <?php if ( \'0\' == $comment->comment_approved ) : ?>
                <p class="comment-awaiting-moderation"><?php _e( \'Your comment is awaiting moderation.\', \'twentytwelve\' ); ?></p>
            <?php endif; ?>

            <section class="comment-content comment">
                <?php comment_text(); ?>
                <?php edit_comment_link( __( \'Edit\', \'twentytwelve\' ), \'<p class="edit-link">\', \'</p>\' ); ?>
            </section><!-- .comment-content -->

            <div class="reply">
                <?php comment_reply_link( array_merge( $args, array( \'reply_text\' => __( \'Reply\', \'twentytwelve\' ), \'after\' => \' <span>&darr;</span>\', \'depth\' => $depth, \'max_depth\' => $args[\'max_depth\'] ) ) ); ?>
            </div><!-- .reply -->
        </article><!-- #comment-## -->
    <?php
        break;
    endswitch; // end comment_type check

结束

相关推荐

不能选中“Allow Comments”框

我已经注册了一个自定义帖子类型,确保“支持”中有“评论”,并且允许在“设置”->“讨论”下的新帖子上发表评论。我确实看到了允许评论和允许回溯/ping的复选框。如果我选中“允许评论”,则更新/发布帖子,it automatically gets unchecked.我不知道为什么。我找到的唯一解决方案是通过SQL查询。我可以在保存后添加一个操作来运行查询,但我想知道问题出在哪里。register_post_type( \'ott_products\', array(