为什么我的Functions.php文件中的JavaScript/jquery代码只在我的WordPress站点上第一个加载的帖子上工作?

6qfn3psc  于 2022-11-02  发布在  WordPress
关注(0)|答案(1)|浏览(102)

我正在一个WordPress网站上工作,其中的内容将被替换,每周(任何职位,媒体或文件被从WP环境每周擦除,然后重新填充所有新的内容,等等)。
文章页面的主要特点之一是,我必须从Word文档中直接复制本地URL并粘贴到WordPress文章中。由于原始超链接指向保存在我本地系统中的文件,因此这些超链接在WordPress站点上显然没有正确链接。我为此使用REGEX概念创建了一个小脚本,根据类别自动更改超链接。
这段代码片段保存在我的functions.php文件中(加载本地保存的脚本,该脚本执行实际的链接更改魔术):

Function load_js_assets_Tab2 () {
       if( in_category('10')) {
            wp_enqueue_script('tab2LinkReplace','https://myserver/wordpress/wp-content/tab2LinkReplace.js', array('jquery'), '', true);
       }
}
add_action('wp_enqueue_scripts', 'load_js_assets_Tab2');

问题:

由于某些原因,这个脚本只在我加载的第一篇文章上有效,然后不适用于所有自动加载的文章。无论我先点击哪个文章,脚本都有效,但是当我向下滚动文章时,它不会适用于任何后续的文章。“自动加载下一篇文章”功能内置在我的模板Newsblock(https://newsblocktheme.com/)中。
我假设这与自动加载下一篇文章功能是通过 AJAX 加载完成的这一事实有关,但我不知道如何解决这个问题。
如果任何一个人有任何建议,变通或想法如何处理这一不同...我真的会很感激!

bvn4nwqk

bvn4nwqk1#

AJAX 可能是问题所在,超链接修复功能没有被调用。
您可以使用$(document).bind('ajaxComplete')每个AJAX 请求之后执行操作,并且可以使用它作为触发器来重新运行该函数
您只需将其包含在tab2LinkReplace.js文件中,但我不确定JS是如何工作的,所以我只留下了一些基本的注解

$(document).ready(function() {
  $(document).bind('ajaxComplete', function(){
    // was new post loaded?
      // new post has loaded

      // call function 
      // or manually fix: 

      // - loop through each newly created link:
        // - > Fix Link w Magical Regex
  });
});

相关问题