如何更改 RSS 框中的每个 url?

How can I change every url in rss box?

我有一个 wordpress 网站,可以在这里找到:
http://neocsatblog.mblx.hu/
在右边你可以看到这个 links:

这个 url 来自我的 youtube rss 频道(上传播放列表),url 是这样的:

https://www.youtube.com/feeds/videos.xml?channel_id=UCxnFBx6UhZS25Poa5-ZeeNg

我想修改此 link 以便我可以在灯箱中显示视频。
例如,我想上交这个 link:

https://www.youtube.com/watch?t=2&v=yYNcwFIwCpU

对此:

http://www.youtube.com/embed/yYNcwFIwCpU?autoplay=1

所以我为它写了一个脚本:

jQuery(document).ready(function() {
  
        str = jQuery("#rss-4 ul li a").attr("href");
        jQuery("#rss-4 ul li a").each(function() {
        jQuery("#rss-4 ul li a").attr("href",str.replace(/(youtube.com)\/watch\?v\=|(youtu.be)\//g, "youtube.com/embed/"));
        jQuery( '#rss-4 ul li a' ).attr( 'href', function(index, value) {
        return value + '?autoplay=1';
        });
        //Lightview class need for the lightbox
        jQuery("#rss-4 ul li a").addClass("lightview");
         });
});

不幸的是这个脚本没有做正确的事情。
它有什么作用?
该脚本将所有 links url 替换为最新视频 url(列表中的第一项)。
在这种情况下,将所有 url 替换为

"Puzsér szár aranyért sem adná"

link url.

我该如何解决这个问题?

您正在使用 each 遍历所有实例,但是在 each 中您将所有链接设置为相同的 url。

此外,您在 str 中存储的值是第一个匹配选择器的 href。

this in each 是元素集合的实例,所以尝试:

jQuery("#rss-4 ul li a").each(function() {
        var str = this.href;
        str = str.replace(/(youtube.com)\/watch\?v\=|(youtu.be)\//g, "youtube.com/embed/");
         str +='?autoplay=1';
         // only change the current element
        jQuery(this).attr("href", str);            
});

--或使用 attr(function)

jQuery("#rss-4 ul li a").attr('href',function(_, oldHref) {
        var str = oldHref.replace(/(youtube.com)\/watch\?v\=|(youtu.be)\//g, "youtube.com/embed/");
         str +='?autoplay=1';
         return str;           
});