Моделирование Администратора комментирует в WP 3.1.3

Существует много документации относительно того, как разработать 'autor' или 'администраторские' комментарии в WP, но большая часть из него кажется дико устаревшей.

У меня есть клиент, для которого я разрабатываю сайт Вопросов и ответов. Я всегда фигурирую, лучше использовать безотносительно инструментов Wordpress уже предоставил мне. Вот почему я решил настроить форму, которая продвигает все "вопросы" пользовательскому типу сообщения. Который мой клиент может затем считать и прокомментировать со своим ответом.

Единственная проблема, с которой я столкнулся, состоит в том, что я должен разработать его комментарии парой способов. Они должны выделиться. Этого достаточно легко достигнуть действительно, поскольку WP теперь динамично генерирует класс для каждого, создает комментарии. Таким образом, я просто записал немного CSS для этого:

.comment-author-myClient {
background-color: #bcd1f7;
padding: 10px;
border: 1px dotted black;
}

Это сделало задание того, чтобы заставлять его комментарии выглядеть по-другому. Но это все еще не достаточно. Я действительно хочу отредактировать его определенный шаблон комментария. Вместо него, говоря что-то как 'пользователь говорит": я хочу, чтобы это сказало "Ответ myClient":

Я также хотел бы за его комментарии к - всегда остаются наверху.

Теперь, это никогда не должно действительно становиться проблемой, поскольку стандартные комментарии WP отображены в формате ASC, поэтому, пока является первым для комментария (которым он должен всегда быть), его комментарий должен всегда быть наверху. Но, я просто хочу быть в безопасности.

Кроме того, я хотел бы за его комментарий появиться прежде:

X ответов на "постзаголовок":

Только для упрощения всем, кто собирается попытаться помочь мне.. Вот является twentyten comments.php файлом:

<?php
/**
 * The template for displaying Comments.
 *
 * The area of the page that contains both current comments
 * and the comment form.  The actual display of comments is
 * handled by a callback to twentyten_comment which is
 * located in the functions.php file.
 *
 * @package WordPress
 * @subpackage Twenty_Ten
 * @since Twenty Ten 1.0
 */
?>

            <div id="comments">
<?php if ( post_password_required() ) : ?>
                <p class="nopassword"><?php _e( 'This post is password protected. Enter the password to view any comments.', 'twentyten' ); ?></p>
            </div><!-- #comments -->
<?php
        /* Stop the rest of comments.php from being processed,
         * but don't kill the script entirely -- we still have
         * to fully load the template.
         */
        return;
    endif;
?>

<?php
    // You can start editing here -- including this comment!
?>

<?php if ( have_comments() ) : ?>
            <h3 id="comments-title"><?php
            printf( _n( 'One Response to %2$s', '%1$s Responses to %2$s', get_comments_number(), 'twentyten' ),
            number_format_i18n( get_comments_number() ), '<em>' . get_the_title() . '</em>' );
            ?></h3>

<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // Are there comments to navigate through? ?>
            <div class="navigation">
                <div class="nav-previous"><?php previous_comments_link( __( '<span class="meta-nav">&larr;</span> Older Comments', 'twentyten' ) ); ?></div>
                <div class="nav-next"><?php next_comments_link( __( 'Newer Comments <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
            </div> <!-- .navigation -->
<?php endif; // check for comment navigation ?>

            <ol class="commentlist">
                <?php
                    /* Loop through and list the comments. Tell wp_list_comments()
                     * to use twentyten_comment() to format the comments.
                     * If you want to overload this in a child theme then you can
                     * define twentyten_comment() and that will be used instead.
                     * See twentyten_comment() in twentyten/functions.php for more.
                     */
                    wp_list_comments( array( 'callback' => 'twentyten_comment' ) );
                ?>
            </ol>

<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // Are there comments to navigate through? ?>
            <div class="navigation">
                <div class="nav-previous"><?php previous_comments_link( __( '<span class="meta-nav">&larr;</span> Older Comments', 'twentyten' ) ); ?></div>
                <div class="nav-next"><?php next_comments_link( __( 'Newer Comments <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
            </div><!-- .navigation -->
<?php endif; // check for comment navigation ?>

<?php else : // or, if we don't have comments:

    /* If there are no comments and comments are closed,
     * let's leave a little note, shall we?
     */
    if ( ! comments_open() ) :
?>
    <p class="nocomments"><?php _e( 'Comments are closed.', 'twentyten' ); ?></p>
<?php endif; // end ! comments_open() ?>

<?php endif; // end have_comments() ?>

<?php comment_form(); ?>

</div><!-- #comments -->

И вот часть functions.php, к которому она относится:

if ( ! function_exists( 'twentyten_comment' ) ) :
/**
 * Template for comments and pingbacks.
 *
 * To override this walker in a child theme without modifying the comments template
 * simply create your own twentyten_comment(), and that function will be used instead.
 *
 * Used as a callback by wp_list_comments() for displaying the comments.
 *
 * @since Twenty Ten 1.0
 */
function twentyten_comment( $comment, $args, $depth ) {
    $GLOBALS['comment'] = $comment;
    switch ( $comment->comment_type ) :
        case '' :
    ?>
    <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
        <div id="comment-<?php comment_ID(); ?>">
        <div class="comment-author vcard">
            <?php echo get_avatar( $comment, 40 ); ?>
            <?php printf( __( '%s <span class="says">says:</span>', 'twentyten' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?>
        </div><!-- .comment-author .vcard -->
        <?php if ( $comment->comment_approved == '0' ) : ?>
            <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentyten' ); ?></em>
            <br />
        <?php endif; ?>

        <div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
            <?php
                /* translators: 1: date, 2: time */
                printf( __( '%1$s at %2$s', 'twentyten' ), get_comment_date(),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)', 'twentyten' ), ' ' );
            ?>
        </div><!-- .comment-meta .commentmetadata -->

        <div class="comment-body"><?php comment_text(); ?></div>

        <div class="reply">
            <?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
        </div><!-- .reply -->
    </div><!-- #comment-##  -->

    <?php
            break;
        case 'pingback'  :
        case 'trackback' :
    ?>
    <li class="post pingback">
        <p><?php _e( 'Pingback:', 'twentyten' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( '(Edit)', 'twentyten' ), ' ' ); ?></p>
    <?php
            break;
    endswitch;
}
endif;

Вся документация, которую я нашел к настоящему времени при изменении администраторских комментариев, была от предыдущей версии WP и Twentyten, где цикл комментариев все хранится в comments.php и имеет много другого формата. Таким образом, любая справка с целями, которых я пытаюсь достигнуть здесь, очень, очень ценилась бы.

TIA

0
03.06.2011, 05:27
3 ответа

Почему бы не использовать:

if ( user_can( $comment->user_id, 'administrator' ) ) {
     // current comment is from an administrator;
     // do something
}

Что касается помещения администратора комментирует наверху списка комментария, необходимо было бы изменить сам запрос комментария.

1
20.02.2020, 00:17

Я действительно понимал это. Хотя может быть более чистый способ сделать это.Я не знаю.. Вот мой новый functions.php файл...

<?php /* If the author is myclient, use class 'author' otherwise, use class 'comment byuser' */
   if ($comment->comment_author_email == "admin@adminemail.com")
   echo '<li class="author">';
   else
   echo '<li class="comment byuser">';
   /* I had to make this li class static because I don't know how 
      to inject PHP in an echo that's in an if/else statement. 
      echo 'stuff here' . php here . 'more stuff'; did not work. 
    */
   ?>

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

            <?php /* get user avatar only if the author is NOT myClient */
            if ($comment->comment_author_email !== "admin@adminemail.com")
            echo get_avatar( $comment, 40 ); 
            ?> 

            <?php if  /* if the user is myClient, append "myClient answers" instead of the author link. Otherwise, proceed as normal. */
            ($comment->comment_author_email == "admin@adminemail.com")

             printf( __( '<b>myClient Answers:</b>', 'twentyten' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) );           
            else

             printf( __( '%s <span class="says">replies:</span>', 'twentyten' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); 
             ?>


        </div><!-- .comment-author .vcard -->
        <?php if ( $comment->comment_approved == '0' ) : ?>
            <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentyten' ); ?></em>
            <br />
        <?php endif; ?>

        <div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
            <?php
                /* translators: 1: date, 2: time */
                printf( __( '%1$s at %2$s', 'twentyten' ), get_comment_date(),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)', 'twentyten' ), ' ' );
            ?>
        </div><!-- .comment-meta .commentmetadata -->

        <div class="comment-body"><?php comment_text(); ?></div>
        <div class="reply">
            <?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
        </div><!-- .reply -->
    </div><!-- #comment-##  -->
    </li> 
   <?php if /* if the comment is by myClient, append this div after it. */($comment->comment_author_email == "admin@adminemail.com")
   echo '<div id="commentdivider"></div>';
   echo '<br>';
   ?>
    <?php
            break;
        case 'pingback'  :
        case 'trackback' :
    ?>
    <li class="post pingback">
        <p><?php _e( 'Pingback:', 'twentyten' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( '(Edit)', 'twentyten' ), ' ' ); ?></p>
</li>
    <?php
            break;
    endswitch;
}
endif;

затем Вы просто разрабатываете класс, как который Вы присвоили администраторским комментариям, так....

.author {
line-height: 24px;
padding: 20px;
position: relative;
background-color: #EDEFF4;
margin-bottom: 25px;
} 

Можно сделать некоторую тонкую настройку других комментариев также, чтобы заставить их выглядеть хорошими. Я просто изменил поле и дополняющий немного. Вот снимок экрана готового изделия:

screenshot of the comments page

Я просто взял "x ответы на постзаголовок" из уравнения полностью.

0
20.02.2020, 00:17

Найдите элемент списка, где содержание комментария расположено (обычно в comments.php), и добавьте следующее в теге класса:


если (1 == $comment-> user_id)
эхо 'автор';

Теперь разработайте класс CSS .author!

0
20.02.2020, 00:17

Теги

Похожие вопросы