Поддержка Проблемы и решения Дата комментария

  • Решено NicaNed

    (@nicaned)


    Здравствуйте! Помогите, пожалуйста, разобраться. При публикации комментария вместо даты и времени его публикации на сайте появляется вот это:
    %A %B %e%q, %Y at %I:%M %p , причем выглядит как ссылка и при клике по ней переносит пользователя в конец страницы. В админке дата отображается нормально: Submitted on 2014/01/05 at 20:21.
    Подскажите, пожалуйста, что может быть причиной? Заранее спасибо.

Просмотр 15 ответов — с 1 по 15 (всего 17)
  • Код покажите, которым список комментариев у вас выводится.

    причем выглядит как ссылка и при клике по ней переносит пользователя в конец страницы

    Это нормально. Он переносит по якорю к этому комментарию (комментарий оказывается на самом верху экрана, если длина страницы позволяет).

    Извините, я пока мало что понимаю в РHP. Наверное, вот этот код:

    <ol class="commentlist">
    	?php
    
               wp_list_comments( array( 'callback' => 'ready_ecommerce_comment' ) );
    	?>
    		</ol>

    Это нормально. Он переносит по якорю к этому комментарию

    Что ж тут нормального? Эта кракозябра в виде ссылки стоит перед самим комментом, а при клике переносит вниз прямо в футер, где никакого комментария нет и в помине. Зачем такой якорь нужен?

    Этот код, да. А в ready_ecommerce_comment() у вас что?

    Традиционно ссылка под датой является якорем к самому комментарию. Если у вас ссылка работает некорректно, то нужно исправлять, конечно. А сама по себе ссылка и перенос в порядке вещей. Но я же не могу угадать, куда что у вас переносит, сегодня хрустальный шар на полировке.

    Наверное, вот это:
    function ready_ecommerce_comment( $comment, $args, $depth ) {

    Я, вероятно, непонятно описала проблему. Ссылка/якорь с такими знаками
    %A %B %e%q, %Y at %I:%M %p появляется не под датой, а вместо даты. И переносит она не на комментарий. Она и так стоит прямо перед комментарием. Она переносит в футер к второстепенному меню. Комментариев там нет. Смотрю исходный код страницы в браузере и там вообще никакого намека на ссылку. Эти знаки там стоят как обычный текст.

    Это и должна быть дата, но вместо подстановки самой даты выводиться формат. У вас и ссылка работает не правильно, видимо. Это понятно. Я говорю о том, как правильно должно быть.

    Саму функцию нашли, а что внутри-то покажите.

    Вот это оно? Простите, для меня пока что php — китайская грамота.

    <?php
    	}
    endif; 
    
    if ( ! function_exists( 'ready_ecommerce_comment' ) ) :
    
    	function ready_ecommerce_comment( $comment, $args, $depth ) {
    	$GLOBALS['comment'] = $comment;
    	switch ( $comment->comment_type ) :
    		case 'pingback' :
    		case 'trackback' :
    		?>

    Это оно, только вы до конца функцию покажите. Вот там фигурная скобка открылась — это начало. А где она закроется — конец. Целиком покажите, что внутри фигурных скобок.

    Теперь вроде целиком:

    function ready_ecommerce_comment( $comment, $args, $depth ) {
    	$GLOBALS['comment'] = $comment;
    	switch ( $comment->comment_type ) :
    		case 'pingback' :
    		case 'trackback' :
    		?>
    		<li class="post pingback">
    		<p>
    		<?php _e( 'Pingback:', 'ready_ecommerce' ); ?>
    		<?php comment_author_link(); ?>
    		<?php edit_comment_link( __( '(Edit)', 'ready_ecommerce' ), ' ' ); ?>
    		</p>
    		<?php
    		break;
    
    		default :
    		?>
    		<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
    		<article id="comment-<?php comment_ID(); ?>" class="comment">
    			<footer>
    				<div class="comment-author vcard"> <?php echo get_avatar( $comment, 40 ); ?> <?php printf( __( '%s <span class="says">says:</span>', 'ready_ecommerce' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?> </div>
    				<!-- .comment-author .vcard -->
    				<?php if ( $comment->comment_approved == '0' ) : ?>
    					<em>
    					<?php _e( 'Your comment is awaiting moderation.', 'ready_ecommerce' ); ?>
    					</em><br />
    				<?php endif; ?>
    				<div class="comment-meta commentmetadata"> <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
    				<time pubdate datetime="<?php comment_time( 'c' ); ?>">
    					<?php
    					/* translators: 1: date, 2: time */
    					printf( __( '%1$s at %2$s', 'ready_ecommerce' ), get_comment_date(), get_comment_time() ); ?>
    				</time>
    				</a>
    				<?php edit_comment_link( __( '(Edit)', 'ready_ecommerce' ), ' ' );
    				?>
    				</div>
    				<!-- .comment-meta .commentmetadata -->
    			</footer>
    			<div class="comment-content">
    			<?php comment_text(); ?>
    			</div>
    			<div class="reply">
    			<?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
    			</div>
    			<!-- .reply -->
    		</article>
    		<!-- #comment-## -->
    
    		<?php
    		break;
    	endswitch;
    	}

    Здравствуйте, NicaNed, на этом сайте установлен qTranslate? Характерная для него проблема. Если так, то, вероятно, в настройках плагина установлено Use emulated date function.
    С такой настройкой корректно работает код с установленным форматированием даты и времени
    get_comment_date('d M, Y'), get_comment_time('H, i')

    Для get_comment_date(), get_comment_time() (без форматирования)
    корректно работает опция Use strftime instead of date.

    Но при этом надо обратить внимание на то, как выводятся даты записей, если они уже отформатированы, например get_the_date('j M. Y') то при strftime instead of date вместо даты будет выводиться j M. Y

    В общем, надо привести к одному виду функции вывода даты / времени и выбрать соответствующую настройку.

    Полезная ссылка
    http://codex.wordpress.org/Formatting_Date_and_Time

    vjpo, огромное Вам спасибо, дату и время настроила благодаря Вашим советам. Только время показывается с запятой вместо двоеточия: 05 Jan, 2014 at 20, 21 Можно ли это исправить?
    Может, подскажете еще, как избавиться от якоря, которым является дата и время. Иначе этот якорь уносит от комментария в футер.

    Двоеточие get_comment_time('H:i')
    Для этого и была полезная ссылка )

    Избавиться от якоря можно, удалив
    <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
    и
    </a>
    Почему уносит в футер — сейчас как-то не соображу.

    Двоеточие get_comment_time(‘H:i’)

    Я так делала. Результата нет. И якорь почему-то не желает удаляться.(( Ссылки уже нет в functions.php, а якорь по-прежнему есть, но хоть не уносит теперь в футер, а перемещает всего на одну строку вниз к комментарию.

    Результат есть, но кэш (браузер? wp кэш-плагин, сервер?) показывает старую версию.
    Попробуйте перезагрузить страницу в браузере или Ctrl+F5.

    Перезагрузила страницу раз 10. Cтоит плагин WP Super Cache. Если что-то меняю в CSS, это видно на сайте сразу. А вот с отображением времени ничего не происходит.(

    Спасибо, vjpo, за Вашу помощь. Действительно, некоторые настройки плагина кэширования были не доработаны. Теперь все в порядке и с якорем и с временем. Огромное Вам спасибо и всего наилучшего!!

Просмотр 15 ответов — с 1 по 15 (всего 17)
  • Тема «Дата комментария» закрыта для новых ответов.