@sergiocharm

Как заставить работать скрипты внутри подгруженного контента?

При скролле статьи внизу подгружается следующая статья, код такой
Проблемы которые не могу решить:
- в подгруженной статье не выводятся комментарии - пример статьи
- function.php есть код рекламы РСЯ, который выводится перед заголовками, в подгруженной статье подгрузка не срабатывает
- в сайдбаре код vk группы почему то улетает к первой статье

/* Бесконечная прокрутка начало */
function centil_infinite_scroll($pid){
  if (is_single()) { ?>
    <script type="text/javascript" >
      jQuery(document).ready(function($) {

        $(window).scroll(function() {
          var footerPos = $('#footer').last().position().top;
          var pos = $(window).scrollTop();

          // Load next article 
          if (pos+(screen.height*2) > footerPos) {
            if ($(".centil-infinite-scroll").first().hasClass('working')) {
              return false;
            } else {
              $(".centil-infinite-scroll").first().addClass('working');
            }

            var centilNextPostId = $(".centil-infinite-scroll").first().text();
            var data = {
              'action': 'centil_is',
              'centilNextPostId': centilNextPostId
            };

            // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
            jQuery.post('<?php echo admin_url("admin-ajax.php"); ?>', data, function(response) {
              $(".centil-infinite-scroll").first().replaceWith(response);
              // In AJAX success event handler
                $.getScript('https://allremont59.ru/wp-content/plugins/table-of-contents-plus/front.min.js');
            }, 'html');
          }

          // Update new URL
          var currUrl = $(".centil-post-header").first().attr("url");
          var currTitle = $(".centil-post-header").first().attr("title");

          if ($(".centil-post-header").length > 1 && history.pushState) {
            for (var i=0; i<$(".centil-post-header").length; i++) {
              if (pos+(screen.height/2) >= $(".centil-post-header").eq(i).next().position().top) {
                currUrl = $(".centil-post-header").eq(i).attr("url");
                currTitle = $(".centil-post-header").eq(i).attr("title");
              }
            }
          }
          if (location.href != currUrl) {
            history.pushState({}, currTitle, currUrl);
          }
        });
      });
    </script>

  <?php }
}
add_action( 'wp_head', 'centil_infinite_scroll' );

function centil_infinite_scroll_callback() {

  if (isset($_POST['centilNextPostId']) && $_POST['centilNextPostId']) {
    // The Query
    $the_query = new WP_Query(array('p'=>$_POST['centilNextPostId']));

    // The Loop
    if ( $the_query->have_posts() ) {
      while ( $the_query->have_posts() ) {
        $the_query->the_post();
        get_template_part( 'template-parts/content-infinite' );
      }
    }
    /* Restore original Post Data */
    wp_reset_postdata();
  }

  wp_die();
}
add_action( 'wp_ajax_centil_is', 'centil_infinite_scroll_callback' );
add_action( 'wp_ajax_nopriv_centil_is', 'centil_infinite_scroll_callback' );
/* Бесконечная прокрутка КОНЕЦ */
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 2
@sergiocharm Автор вопроса
с помощью
$.getScript('https://allremont59.ru/wp-content/plugins/table-of-contents-plus/front.min.js');

заставил работать содержание
но скрипт рекламы так не запускается((

Комментарии вывел
global $withcomments;
            $withcomments = true; 
            comments_template();
Ответ написан
Комментировать
@nonconformiste
Я так думаю тебе ведь не нужен прям весь front.min.js, а только кусочек отвечающий за содержания этой AJAX-Вундервафли что ты загружаешь. Так вот, после успешной загрузки, пропиши триггер и подпиши его как хочешь, а потом те плюшки из файла front.min.js вызывай так-же, по триггеру.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы