gpt4 book ai didi

wordpress-theming - Wordpress - single.php 调用了两次

转载 作者:行者123 更新时间:2023-12-02 06:20:23 24 4
gpt4 key购买 nike

我正在开发一个插件,为了进行一些快速而肮脏的开发,我在 single.php 中添加了一个函数调用,它调用我的插件中的一个函数,该函数将有关当前帖子的数据存储在数据库中。

不过,我注意到它总是被调用两次:一次是针对我请求的帖子,一次是针对另一篇帖子(未显示在页面内容中)。

有谁知道这是为什么,如果是这样,这是否是期望的行为,如果不是,我该如何解决?

这是一个类似于我的 single.php 的示例:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php do_action('msw_single_php', $wp_query); ?>

还有一个类似于我的插件文件:

add_action('msw_single_php', 'msw_sp', 0, 1);
function msw_sp(WP_Query $query) {
global $wpdb;
$wpdb->insert($wpdb->prefix . 'msw_career_view_debug', array(
'request_info' => json_encode($query),
));
}

最佳答案

我遇到了同样的问题,现在已经解决了。

对我来说,这个问题只发生在 Firefox 上,当调用 single.php 时。而您不想要的帖子是相邻的帖子。

然后我搜索了很多,最后在这里找到了解决方案:

http://shinephp.com/single-php-called-twice-how-to-stop/

它给出了另一个引用:

http://wordpress.org/support/topic/singlephp-called-for-current-and-next-post-with-pretty-permalinks

感谢以上链接。

我想在这里简单介绍一下:

原因是 Firefox 预取功能。对于single.php,WP会自动在<header>中放入两个 ,其中一个是rel="next",指向下一篇文章(相邻的文章)。

当 Firefox 看到这个时,它会预取 指向的页面以加快速度,以防您在阅读当前文章后转到下一篇文章。因此该帖子将被调用,但您永远不会看到它显示。这也是为什么您看不到为调试而转储的任何消息,甚至看不到回溯的原因。

顺便说一句,添加两个 的操作被添加到“default-filters.php”中。对于 WP 3.5.1,它位于第 204 行。

解决方案是:

编写一个函数(例如“remove_adjacent_links”)执行:

remove_action(‘wp_head’, ‘adjacent_posts_rel_link_wp_head’)

并将函数 (remove_adjacent_links) 挂接到“init”。

这样,链接将从 .

但是,如果您确实希望链接在那里,也许您必须以这种方式保留它并容忍 Firefox 的预取...这就是我正在做的,因为这对我的情况无关紧要。我没有尝试是否有办法离开那里并使用 WP 代码来阻止 Firefox 预取。

关于wordpress-theming - Wordpress - single.php 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11823331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com