我正尝试检测我的网站是否包含带有相同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循环外创建一个var,并尝试使用+ =存储它,但这只是将所有链接放在一行中,这使我无法单独检查每个链接。
是否甚至可以检测到我的页面是否具有与我设置代码的方式相同的href链接,或者是否必须尝试其他操作?
如果有什么建议对我有帮助,我将不胜感激。
提前谢谢!
编辑: 我的意图是删除这两篇文章之一,以便删除链接所在的父div。
答案 0 :(得分:2)
您可以在Set
.top-post
个a
中创建一个href
。然后,当您遍历.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();
}
});