gpt4 book ai didi

php - 为什么 WordPress 在帖子/页面 View 中添加重复的数字 slug?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:16 27 4
gpt4 key购买 nike

这是我在这里的第一篇文章,所以对于任何不愉快之处,我提前表示歉意。

我已经搜索了几个小时试图弄清楚这一点,但我似乎无法理解为什么会这样。

我正在设置的站点是一个子站点(不是多站点意义上的子站点,而是作为具有相同品牌的独立站点/域)。我网站上的一些帖子将来自父/主站点(但将通过复制粘贴制作为新帖子),我希望原始文章 ID 作为永久链接的一部分。

例如http://www.example.com/hello-world/12345/ ,其中 12345 是文章在父/主站点上的文章 ID。

为此,我在我的帖子中添加了一个自定义字段,我可以在其中添加原始文章的文章 ID,并将 external_article_id 作为字段名称。然后我尝试使用以下代码操作永久链接:

add_filter('post_link', 'append_custom_permalink', 10, 2);

function append_custom_permalink($url, $post) {
$newurl = $url;

if ($post->post_type == 'post') {
$custom = get_post_custom_values('external_article_id', $post->ID);
if (!empty($custom))
$newurl = $url . $custom[0] . '/';
}

return $newurl;
}

每当我将永久链接输出到帖子时,它就会完全按照我的要求显示,无论是在编辑器中还是在网站上。但是,当我单击链接或手动输入地址时,我会自动重定向到 http://www.example.com/hello-world/12345/12345/ .它复制了额外的数字 slug,并且当我用硬编码数值替换 $custom[0] 时也会发生。这适用于所有帖子,我的永久链接结构(在设置中)设置为 /%postname%/

我什至尝试将永久链接结构设置为 /%postname%/%ext_article_id%/ 并将 %ext_article_id% 替换为 $custom[0],但结果完全相同。我还尝试在另一个 WordPress 网站上使用相同的代码,但这次使用的是页面而不是帖子,结果也完全相同。

理想情况下,我想使用类似 add_query_arg($custom[0], '', get_permalink($post->ID)); 的东西,但省略它附带的问号.

有人可以向我解释为什么会发生这种情况,我该如何避免这种情况?我是否需要使用其他过滤器,或者我该如何处理?

提前致谢!

最佳答案

为了完成这项工作,您还需要让 WordPress 知道 rewrite_tag并通过 add_permastruct 指定额外的永久链接结构.下面的代码应该可以解决问题:

function append_custom_permalink( $post_link, $post ) {
if( $post->post_type == 'post' ) {
$custom = get_post_custom_values( 'external_article_id', $post->ID );
if( ! empty($custom) ) {
$post_link = $post_link.$custom[0].'/';
}
}
return $post_link;
}
add_filter('post_link', 'append_custom_permalink', 10, 2);

function sof_30058470_posts_rewrite() {
add_rewrite_tag('%external_article_id%', '([^/]+)', 'external_article_id=');
add_permastruct('external_article_id', '/%year%/%monthnum%/%day%/%postname%/%external_article_id%/', false);
}
add_action('init', 'sof_30058470_posts_rewrite', 10, 0);

确保在添加代码后在“设置”->“永久链接”中重新保存永久链接结构。您可能还需要刷新/清除浏览器缓存。

关于php - 为什么 WordPress 在帖子/页面 View 中添加重复的数字 slug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30058470/

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