web-dev-qa-db-ja.com

Wordpressのカスタム投稿タイプパーパスリンク:website.com/post-name/post-id

私は私のカスタム投稿タイプartikelen(正確なスラグ)のためにワードプレスでカスタムパーマリンクを構築しようとしています。私はコードをオンラインで見つけました、そしてそれはカスタム構造%postname%/%postid%でリンクを変換することによって仕事をしているようです、しかし、私が私のパーマリンクを保存して、詳細ページに行くとき404エラーを得ます。

私は自分の作業方法を示すために自分のコードを投稿しています。

add_filter('post_type_link', 'wpse33551_post_type_link', 1, 3);

function wpse33551_post_type_link( $link, $post = 0 ){
    if ( $post->post_type == 'artikelen' ){
        return home_url( $post->post_name .'/'. $post->ID );
    } else {
        return $link;
    }
}

add_action( 'init', 'wpse33551_rewrites_init' );

function wpse33551_rewrites_init(){
    add_rewrite_rule(
        'product/([0-9]+)?$',
        'index.php?post_type=artikelen&p=$matches[1]',
        'top' );
}
1
product/([0-9]+)?$

は、product/の後に任意の数字または何もない(さらに末尾のスラッシュでもない)を意味します。これはあなたが達成したいことのようには思えません。

代わりに、次のことを試してください。

function wpse33551_rewrites_init(){
    add_rewrite_rule(
        '^([^/]+)/([0-9]+)/?$',
        'index.php?post_type=artikelen&p=$matches[2]',
        'top'
    );
}

which に変換されます。

  • ^文字列の先頭(つまり、先頭に他には何もありません)
  • ([^/]+)/ではない少なくとも1文字
  • /:スラッシュ
  • ([0-9]+):少なくとも一つの数字
  • /?:ゼロまたは1(末尾)のスラッシュ
  • $:文字列の終わり
1
kero