WordPress和PHP:从子页永久链接中删除父Slug

时间:2017-03-07 21:53:09

标签: php wordpress .htaccess url-rewriting permalinks

我觉得我与目前的代码非常接近,但有些东西仍然无效。 Stack Overflow上的其他类似问题都没有解决这个问题。

我在WordPress中有父页面和子页面(不是帖子,不是自定义帖子类型),并且选择了默认的mydomain.com/%postname%结构。

目前页面的永久链接结构是mydomain.com/parent-page/child-page

在单页面编辑器的后端,正确显示所需的永久链接(删除了父页面)。即mydomain.com/child-page

但是,当我访问mydomain.com/child-page时,我得到了404。

我已经通过访问永久链接设置页面来刷新重写规则。

我做错了什么?

 function wpse_101072_flatten_hierarchies( $page_link, $post ) {
    $post = get_post($post);

    $uri = '';

    if($post->post_parent !== 0) {
        $uri = get_post( $post->post_parent )->post_name . "/" . $uri;
        return str_replace( $uri, '', $page_link );
    } else {
        return $page_link;
    }
}
add_filter( 'page_link', 'wpse_101072_flatten_hierarchies', 10, 2 );

function wp_pages_permalink( $permalink_structure, $post_id ) {
    if ( empty( $post_id ) ) return $permalink_structure ;

    $post = get_post( $post_id );

    if($post->post_parent !== 0) {
        $par = get_post($post->post_parent);
        $parname = $par->post_name . '/';
        $permalink_structure = str_replace( '%pagename%', $post->post_name, $permalink_structure);
        return $permalink_structure;
    }
}

add_filter( 'page_link', 'wp_pages_permalink', 10, 2 ); 

0 个答案:

没有答案