Php 为什么WordPress会在post/页面查看时添加重复的数字段塞?

Php 为什么WordPress会在post/页面查看时添加重复的数字段塞?,php,wordpress,Php,Wordpress,这是我在这里的第一篇帖子,所以我为任何意外事件提前道歉 我已经找了好几个小时试图弄明白这一点,但我似乎无法理解为什么会发生这种情况 我正在设置的站点是一个子站点(不是多站点意义上的站点,而是具有相同品牌的独立站点/域)。我网站上的一些帖子将来自父/主网站(但将通过复制粘贴作为新帖子),我希望原始文章ID作为永久链接的一部分 例如,其中12345是父/主站点上文章的文章ID 为了实现这一点,我在我的帖子中添加了一个自定义字段,在这里我可以添加原始文章的文章ID,并将external\u artic

这是我在这里的第一篇帖子,所以我为任何意外事件提前道歉

我已经找了好几个小时试图弄明白这一点,但我似乎无法理解为什么会发生这种情况

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

例如,其中12345是父/主站点上文章的文章ID

为了实现这一点,我在我的帖子中添加了一个自定义字段,在这里我可以添加原始文章的文章ID,并将
external\u article\u ID
作为字段名。然后,我尝试使用以下代码操纵永久链接:

add_filter('post_link','append_custom_permalink',10,2);
函数append\u custom\u permalink($url,$post){
$newurl=$url;
如果($post->post\u type=='post'){
$custom=get_post_custom_值('external_article_id',$post->id);
如果(!空($custom))
$newurl=$url.$custom[0]./';
}
返回$newurl;
}
每当我将永久链接输出到帖子时,无论是在编辑器中还是在网站上,它都会按照我的要求显示。但是,当我单击链接或手动输入地址时,我会自动重定向到。它复制了额外的数字段塞,当我用硬编码的数值替换
$custom[0]
时也会发生这种情况。这适用于所有帖子,并且我的永久链接结构(在设置中)设置为
/%postname%/

我甚至尝试将permalink结构设置为
/%postname%/%ext\u article\u id%/
,并将
%ext\u article\u id%
替换为
$custom[0]
,但结果完全相同。我还尝试在另一个WordPress网站上使用相同的代码,除了这次使用页面而不是帖子,结果也完全一样

理想情况下,我希望使用
add_query_arg($custom[0],'',get_permalink($post->ID)),但省略随附的问号

有人能给我解释一下为什么会发生这种情况,以及我怎样才能避免这种情况?我是否需要使用其他过滤器,或者如何实现这一点


提前谢谢你

为了实现这一点,您还需要让WordPress意识到并通过指定一个额外的永久链接结构。下面的代码应该可以做到这一点:

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);

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

这听起来确实像Wordpress基于URL解析(又称猜测)帖子/页面的逻辑。您是否有机会使用调试器逐步检查代码,并查看它在Wordpress中的复制位置?