Повторяющаяся проверка в комментариях WP

123
HL
На сайте с 12.12.2012
Offline
118
#11

SeVlad, зародился еще на оф. форуме поддержки у моего клиента.

http://ru.forums.wordpress.org/topic/2-идентичные-проверки-в-комментариях

К сожалению я не программист, а больше по рекламе и продвижению. Поэтому по его просьбе решил опубликовать вопрос тут. Там даже какое-то решение нашлось, но ни я ни мой подопечный прикрутить его не смогли из-за отсутствия примитивных знаний в программировании (((

- Дорогой выкуп баннерных показов (https://goo.gl/Haxr87). Советую! - СеоПульт (https://seopult.ru/ref/0c1642776e7e1b04) + крауд-ссылки (https://goo.gl/3eXcqn) = успех - Проверенный CashBack сервис (https://goo.gl/mAIbxw). До 30%
SeVlad
На сайте с 03.11.2008
Offline
1609
#12
HotLab:
Там даже какое-то решение нашлось,

И там же Сергей (член команды разработчиков ВП) сказал:

Функция have_comments() сама по себе очень простая, поэтому заметного прироста производительности от этой оптимизации ожидать не стоит.
Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
HL
На сайте с 12.12.2012
Offline
118
#13

Заметного нет. Но исходя из того, что страничка грузится сейчас около 7 секунд из-за кривизны шаблона, цепляемся за все, что можно хоть как-то ускорить.

Сейчас список доработок по сайту содержит более 70 пунктов, где 80% - это правки шаблона. По возможности стараемся своими силами что-то сделать и хоть немного разобраться.

В общем все это лирика...

siv1987
На сайте с 02.04.2009
Offline
427
#14

Дабы успокоить ТСа


function have_comments() {
if ( $this->current_comment + 1 < $this->comment_count ) {
return true;
} elseif ( $this->current_comment + 1 == $this->comment_count ) {
$this->rewind_comments();
}

return false;
}
HL
На сайте с 12.12.2012
Offline
118
#15

siv1987, спасибо, только теперь все стало еще более запутанно. Если я правильно познал ВП, то этот код надо добавить в functions.php. А в исходном коде

<h4 id="comments"><?php comments_number('Пока комментариев нет. Напишем?', 'Есть 1 комментарий', 'Есть % комментариев');?> <?php if ( have_comments() ) { ?> к “<?php the_title(); ?>” <?php } ?></h4>


<?php if ( have_comments() ) : ?>
какие изменения надо сделать ?
siv1987
На сайте с 02.04.2009
Offline
427
#16

Ничего никуда добавлять не нужно. Вам показали тело функции чтобы вы наглядно могли убедиться что там никаких серьезных вычислений или запросов к бд нету.

SeVlad
На сайте с 03.11.2008
Offline
1609
#17
HotLab:
, цепляемся за все, что можно хоть как-то ускорить.

Это не та цель приложение усилий. Совсем не та. Уверен, что найти можно "более другие" тормоза.

А вообще для выяснений "тонких" моментов существует тн "профилирование".

Видеодоклад на тему. Будет интересен не только для занимающихся ВП.

HL
На сайте с 12.12.2012
Offline
118
#18
SeVlad:
Это не та цель приложение усилий. Совсем не та. Уверен, что найти можно "более другие" тормоза.

По комментариям нашли пока только это, поэтому и зацепились за него.

Возможно есть и другие, если не сложно, посмотрите пожалуйста листинг нашего comments.php

<!-- You can start editing here. -->
<div id="commentpost">

<h4 id="comments"><?php comments_number('Пока комментариев нет. Напишем?', 'Есть 1 комментарий', 'Есть % комментариев');?> <?php if ( have_comments() ) { ?> к “<?php the_title(); ?>” <?php } ?></h4>

<?php if ( have_comments() ) : ?>

<?php if ( ! empty($comments_by_type['comment']) ) : ?>

<div id="post-navigator-single">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>

<ol class="commentlist">
<?php wp_list_comments('type=comment&callback=user_comment'); ?>
</ol>

<div id="post-navigator-single">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>

<?php endif; ?>

<?php else : // this is displayed if there are no comments so far ?>

<?php if ('open' == $post->comment_status) : ?>
<!-- If comments are open, but there are no comments. -->

<?php else : // comments are closed ?>
<!-- If comments are closed. -->
<h2 id="post-header">Комментарии закрыты.</h2>

<?php endif; ?>
<?php endif; ?>

<?php if ('open' == $post->comment_status) : ?>

<div id="respond">
<!-- google_ad_section_end -->
<h4><?php comment_form_title( 'Оставить комментарий', 'Написать ответ %s' ); ?></h4>

<div class="cancel-comment-reply">
<?php cancel_comment_reply_link('Нажмите здесь, чтобы отменить ответ пользователю'); ?>
</div>

<form action="/wp-comments-post.php" method="post" id="cf">

<?php if ( $user_ID ) : ?>

<p>Вы вошли как: <a href="/wp-admin/profile.php" rel="nofollow"><?php echo $user_identity; ?></a></p>

<?php else : ?>

<p>
<label for="author"><small>Ваше имя <?php if ($req) echo "(обязательно)"; ?></small></label><br />
<input required type="text" class="tf" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
</p>

<p>
<label for="email"><small>Ваша почта <?php if ($req) echo "(обязательно)"; ?></small></label><br />
<input required type="email" class="tf" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
</p>

<?php endif; ?>

<textarea name="comment" id="comment" cols="50%" rows="8" class="af" tabindex="3"></textarea>
<script type="text/javascript">
function addsmile($smile){
document.getElementById('comment').value=document.getElementById('comment').value+' '+$smile+' ';
}
</script>
<?php
global $wpsmiliestrans;
$dm_showsmiles = '';
$dm_smiled = array();
foreach ($wpsmiliestrans as $tag => $dm_smile) {
if (!in_array($dm_smile,$dm_smiled)) {
$dm_smiled[] = $dm_smile;
$tag = str_replace(' ', '', $tag);
$dm_showsmiles .= '<img src="/wp-includes/images/smilies/'.$dm_smile.'" alt="'.$tag.'" onclick="addsmile(\''.$tag.'\');"/> ';
}
}
echo '<div class="smile">'.$dm_showsmiles.'</div>';
?><br />

<div>
<input name="submit" type="submit" class="st" value="Отправить" id="submit" alt="Отправить свой комментарий" tabindex="4" />
</div>

<?php comment_id_fields(); ?>

<?php do_action('comment_form', $post->ID); ?>

</form>

</div>

<?php endif; // if you delete this the sky will fall on your head ?>
</div>

Будем очень признательны любым выявленным недочетам и прочим касякам.

SeVlad
На сайте с 03.11.2008
Offline
1609
#19
HotLab:
По комментариям нашли пока только это,

Как искали? С чего решили, что именно это (и что конкретно) тормозит?.

HL
На сайте с 12.12.2012
Offline
118
#20

Изначально все работало быстро, но клиент захотел сделать призыв к действию, если нет комментариев. После внесения всех правок и доработок получилась конструкция, которая представлена выше.

Теперь страница начала дольше грузиться примерно на 1 сек. Проверялось на одном и том же посте, изменения коснулись только вывода комментариев. Начали изучать код и увидели "2 проверки". Вот как-то так мы и зацепились на них.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий