Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.12.2021, 16:29
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

Подгрузить все комментарии за один клик
В WordPress на странице редактирования поста имеется блок "Комментарии", который отображает не все комментарии, а только первые 10, и надо каждый раз кликать по кнопке "Показать ещё комментарии".

В коде ссылка выглядит так.

<p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.load(<?php echo $total; ?>);return false;"><?php _e( 'Show comments' ); ?></a>


И если комментариев много, то приходится каждый раз кликать по этой ссылке, чтобы они вcе отобразились и в конце отобразилась надпись "Больше комментариев не найдено."

<p class="hide-if-no-js" id="show-comments" style="display: none;">Больше комментариев не найдено.</p>


на style="display: none; обращать внимание не стоит, в CSS я добавил

.inside #show-comments {
        display: block !important;
    }


Как можно за счёт одного нажатия отображать все комментарии, типа, наверное, зациклить клик, пока не появится надпись "Больше комментариев не найдено." Как это можно сделать?

Вот кусок кода из файла WordPress, где предположительно всё и происходит.

/**
		 * Fetch comments using Ajax and display them in the box.
		 *
		 * @memberof commentsBox
		 *
		 * @param {number} total Total number of comments for this post.
		 * @param {number} num   Optional. Number of comments to fetch, defaults to 20.
		 * @return {boolean} Always returns false.
		 */
		get : function(total, num) {
			var st = this.st, data;
			if ( ! num )
				num = 20;

			this.st += num;
			this.total = total;
			$( '#commentsdiv .spinner' ).addClass( 'is-active' );

			data = {
				'action' : 'get-comments',
				'mode' : 'single',
				'_ajax_nonce' : $('#add_comment_nonce').val(),
				'p' : $('#post_ID').val(),
				'start' : st,
				'number' : num
			};

			$.post(
				ajaxurl,
				data,
				function(r) {
					r = wpAjax.parseAjaxResponse(r);
					$('#commentsdiv .widefat').show();
					$( '#commentsdiv .spinner' ).removeClass( 'is-active' );

					if ( 'object' == typeof r && r.responses[0] ) {
						$('#the-comment-list').append( r.responses[0].data );

						theList = theExtraList = null;
						$( 'a[className*=\':\']' ).off();

						// If the offset is over the total number of comments we cannot fetch any more, so hide the button.
						if ( commentsBox.st > commentsBox.total )
							$('#show-comments').hide();
						else
							$('#show-comments').show().children('a').text( __( 'Show more comments' ) );

						return;
					} else if ( 1 == r ) {
						$('#show-comments').text( __( 'No more comments found.' ) );
						return;
					}

					$('#the-comment-list').append('<tr><td colspan="2">'+wpAjax.broken+'</td></tr>');
				}
			);

			return false;
		},
Ответить с цитированием
  #2 (permalink)  
Старый 26.12.2021, 17:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

12345678,
так добавьте в onclick второй параметр, такой же как первый.
Ответить с цитированием
  #3 (permalink)  
Старый 26.12.2021, 17:06
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

рони
Спасибо, что откликнулись. А какой параметр? Если можно, приведите, пожалуйста, код.
Ответить с цитированием
  #4 (permalink)  
Старый 26.12.2021, 17:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

12345678,
echo $total; , $total;
Ответить с цитированием
  #5 (permalink)  
Старый 26.12.2021, 17:26
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

рони

Сделал так

<p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.load(<?php echo $total; ?>, <?php echo $total; ?>);return false;"><?php _e( 'Show comments' ); ?></a>


К сожалению не помогло, всё также приходится нажимать по ссылке "Показать ещё комментарии".
Ответить с цитированием
  #6 (permalink)  
Старый 26.12.2021, 17:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

12345678,
может обновить забыли?
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2021, 17:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

12345678,
можно ещё заменить строку 25 'number' : num
на 'number' : total

если и это не поможет тогда искать ограничение на сервере
Ответить с цитированием
  #8 (permalink)  
Старый 26.12.2021, 23:53
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

ничего не помогает, так и грузится по 10 штук и приходится несколько раз по ссылке нажимать, если комментариев много...

В коде ещё вот что имеется, может это мешает.

<script type="text/javascript">jQuery(document).ready(function(){commentsBox.get(<?php echo $total; ?>, 10);});</script>


Я пробовал заменять 10 на $total, но реакции также нет... я просто сломал мозг уже...
Ответить с цитированием
  #9 (permalink)  
Старый 27.12.2021, 00:22
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

Я по этой причине и хотел пойти другим путём. При клике по ссылке "Показать ещё комментарии" запускалась цепочка кликов, пока не исчезала ссылка "Показать ещё комментарии", в коде она выглядит так:

<p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.load(<?php echo $total; ?>);return false;"><?php _e( 'Show comments' ); ?></a>


и на её месте появлялась вот эта надпись:

<p class="hide-if-no-js" id="show-comments" style="display: none;">Больше комментариев не найдено.</p>


Может это было бы не так элегантно, однако задачу бы полностью решало. Потому что по-другому, как мы видим, не получается
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Один для всех и все от одного Gamestop Серверные языки и технологии 5 05.09.2011 09:06
Название ячейки таблицы Questioner Общие вопросы Javascript 6 16.02.2011 09:58
Помогите разобраться с кроссбраузерностью Javascript'a skvsk Events/DOM/Window 6 09.12.2010 09:05
перевод в число или как прибавить один anton_vek Общие вопросы Javascript 3 26.08.2010 13:07
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37