0

ねえ、これは私を殺している !

「features」というカスタム投稿タイプがあります。

そのアーカイブ ページは現在、 mysite.com /features/ から参照できます。

現在、単一の機能は mysite.com/features/single-post/にあります。

ただし、mysite.com/feautres/ 23423 /single-post/で単一の機能を利用できるようにしたいと考えています。

つまり、$post->ID が URL に追加されます。

これはフロントエンドで機能し、正しく書き換えられていますが、WordPress 管理者ではリンクが mysite.com/feautres/%cpt_id%/single-post/として表示されています。

これがこれまでのコードです。

add_filter('post_type_link', 'cpt_url', 1, 3);
function cpt_url($post_link, $id = 0, $leavename) {

    global $wp_rewrite;
    $post = &get_post($id);
    if ( is_wp_error( $post ) )
        return $post;
    $newlink = $wp_rewrite->get_extra_permastruct('features');
    $newlink = str_replace("%postid%", $post->ID, $newlink);
    $newlink = home_url(user_trailingslashit($newlink));

    return $newlink.$post->post_name.'/';    

}

add_action('init', 'add_custom_rewrites');
function sumo_add_custom_rewrites(){

    global $wp_rewrite;

    //rewrites for feature
    $queryarg = 'post_type=features&p=';
    $wp_rewrite->add_rewrite_tag('%postid%', '([^/]+)', $queryarg);
    $wp_rewrite->add_permastruct('features', '/features/%postid%', false);

}

何が間違っているのですか?

4

1 に答える 1

0

問題は、私が間違った場所で post_type_link フィルターを呼び出していたことです。

int フックに追加すると、すべて機能します

于 2013-05-14T18:30:34.467 に答える