Проверьте наличие дублирующих ссылок в DOM - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь определить, есть ли на моем сайте статьи с той же ссылкой href, чтобы дублирующие статьи не отображались прямо друг под другом.Сайт построен на Wordpress, и я сделал следующий запрос, чтобы показать статьи:

$popular = new WP_Query(
    array(
        'posts_per_page'=>4,
        'cat'=>[-48],  // don't display category with this ID in the array
        'meta_key'=>'popular_posts',
        'orderby'=>'meta_value_num',
        'order'=>'DESC',
        'date_query' => array(
            array(
                'after' => array(
                    'year'  => date('Y', $date ),
                    'month' => date('m', $date ),
                    'day'   => date('d', $date ),
                ),
            )
        )
    )
);

Это помещено в цикл while.Еще один, похожий на этот, находится прямо под ним в другом файле .php, и они оба загружаются через родительский файл с функцией get_template_part.

Теперь я написал следующее для регистрации ссылокчто мне нужно, с этим:

jQuery(document).ready(function($){
    var links = document.querySelectorAll('.top-post .post-title a');
    for(var i = 0; i < links.length; i++){
        console.log(links[i].href);
    };

    var links2 = document.querySelectorAll('.tiles .post-title a');
    for(var i = 0; i < links2.length; i++){
        console.log(links2[i].href);
    };
});

Это, конечно, не поможет мне написать оператор if, потому что они оба в своем индивидуальном цикле for, и я не могу с ними связаться.Я также пытался создать переменную вне цикла for и пытался сохранить ее с + =, но это просто помещает все ссылки в одну строку, что делает невозможным проверку каждой ссылки отдельно.

Можно ли даже обнаружить, если на моей странице есть те же ссылки, что и у меня, как я настроил свой код, или мне нужно попробовать что-нибудь другое?

Буду признателен за любые комментарии, которые мне помогут.out.

Заранее спасибо!

РЕДАКТИРОВАТЬ: я намерен удалить одну из двух статей, поэтому родительский div, в котором находится ссылка.

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете сделать Set из .top-post a s href s.Затем, когда вы перебираете .tiles, проверьте, включает ли Set href элемента, над которым вы перебираете:

const topHrefs = new Set(Array.prototype.map.call(
  document.querySelectorAll('.top-post .post-title a'),
  a => a.href
));
document.querySelectorAll('.tiles .post-title a').forEach((a) => {
  if (topHrefs.has(a.href)) {
    console.log('duplicate found: ' + a.href);
    // To remove the parent element of a found duplicate:
    a.parentElement.remove();
  }
});
...