有条件地加载POST页面的评论部分中的类

时间:2014-08-11 作者:IamTrent

我希望能够有条件地加载一个类,该类在评论部分中包含“AUTHOR”一词,该词位于文章作者姓名旁边。我知道这和PostAuthor的课程有关,到目前为止我得到的是:

<?php if $class == \'bypostauthor\' ?>
    <div class="author">AUTHOR</div> 
<? endif; ?>
更多信息:

在我的wordpress帖子页面的评论部分,类。bypostauthor存在于任何时候,只要有一个作者在那里的贴子页上发表了评论,就可以在评论部分中为其中一个评论提供这个->

每当他们在页面上发表评论时,我都试图在帖子名的作者旁边加上“作者”一词。考虑到每当页面作者在其页面上发表评论时,bypostauthor类就会出现,我尝试使用以下代码使div类在作者发表评论时有条件出现->

<li <?php comment_class(\'clearfix\'); ?> id="li-comment-<?php comment_ID() ?>">

    <div class="comment-block" id="comment-<?php comment_ID(); ?>">
        <div class="comment-inside-block">
        <div class="comment-info">  
            <div class="comment-author vcard clearfix">

                <?php echo get_avatar( $comment->comment_author_email, 32 ); ?>

                <div class="comment-meta commentmetadata">
                    <?php printf(__(\'<cite class="fn">%s</cite>\', \'playne\'), get_comment_author_link()) ?><?php if $class == \'bypostauthor\' ?>
    <div class="author">AUTHOR</div> 
<? endif; ?>

                    <div style="clear:both;"></div>
                    <a class="comment-time" href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ) ?>">  <?php echo themeblvd_time_ago_1(); ?>   </a><?php edit_comment_link(__(\'(Edit)\', \'playne\'),\'  \',\'\') ?>
                </div>
            </div>
        <div class="clearfix"></div>
        </div>

        <div class="comment-text">
            <?php comment_text() ?>
            <p class="reply">
                <?php comment_reply_link(array_merge( $args, array(\'depth\' => $depth, \'max_depth\' => $args[\'max_depth\']))) ?>
            </p>
        </div>
        </div>
        <?php if ($comment->comment_approved == \'0\') : ?>
            <em class="comment-awaiting-moderation"><?php _e(\'Your comment is awaiting moderation.\', \'playne\') ?></em>
        <?php endif; ?>    

    </div>
“>评论\\u作者\\u电子邮件,32);?>
                <div class="comment-meta commentmetadata">
                    <?php printf(__(\'<cite class="fn">%s</cite>\', \'playne\'), get_comment_author_link()) ?>

                    <?php echo author_tag(); ?>

                    <div style="clear:both;"></div>
                    <a class="comment-time" href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ) ?>">  <?php echo themeblvd_time_ago_1(); ?>   </a><?php edit_comment_link(__(\'(Edit)\', \'playne\'),\'  \',\'\') ?>
                </div>
            </div>
        <div class="clearfix"></div>
        </div>

        <div class="comment-text">
            <?php comment_text() ?>
            <p class="reply">
                <?php comment_reply_link(array_merge( $args, array(\'depth\' => $depth, \'max_depth\' => $args[\'max_depth\']))) ?>
            </p>
        </div>
        </div>
尝试了基于答案的内容->

function author_tag() {
    $classes = get_comment_class();
    if(in_array(\'bypostauthor\',$classes)) {
        $output = <div class="author-tag"><p>AUTHOR</p></div>;
    } else {
        $output = <div class="author-tag"><p>NOT AUTHOR</p></div>;
    }
    return $output;
}

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

你的第一段代码就快完成了。要使其完全工作,您需要获得注释类的列表,并对照该列表检查您的类。如果您的类存在于返回的列表中,则可以执行其他操作,如果不存在,则可以执行其他操作

使用get_comment_class() 检索该列表。下面是一个示例

$classes = get_comment_class();
if(in_array(\'bypostauthor\',$classes)) {
    // do something for bypostauthor class
} else {
    // do something else if bypostauthor class don\'t exist
}

EDIT 2

您的问题纯粹是语法问题。您的HTML需要介于单引号之间(\'), 否则它将被读取为php,这是无效的php,导致语法错误。检查下面的示例

function author_tag() {
    $classes = get_comment_class();
    if(in_array(\'bypostauthor\',$classes)) {
        $output = \'<div class="author-tag"><p>AUTHOR</p></div>\';
    } else {
        $output = \'<div class="author-tag"><p>NOT AUTHOR</p></div>\';
    }
    return $output;
}
我会建议你获得一个好的语法highligher,这将对你处理无效语法有很大帮助

结束