Deaktivieren Sie% postname% auto-inkrementieren?

Ich benutze die Permalink-Struktur /% post_id% /% postname%, weil ich vom Benutzer Inhalte gesendet habe. Das Problem ist, dass sich% postname% immer noch automatisch erhöht und lustig aussieht, obwohl die Post-ID es einzigartig macht. Gibt es eine Möglichkeit,% postname% auto-incrementing zu deaktivieren?

domain.com/634/apple-pie
domain.com/635/apple-pie-2
domain.com/636/apple-pie-3

sollte sein:

domain.com/634/apple-pie
domain.com/635/apple-pie
domain.com/636/apple-pie

Bonuspunkte, wenn Sie dies nur für einen bestimmten benutzerdefinierten Beitragstyp tun können.

Solutions Collecting From Web of "Deaktivieren Sie% postname% auto-inkrementieren?"

Hallo @Thompson:

Leider muss der Post-Name für einen bestimmten Post-Typ und Hierarchieebene eindeutig sein , wenn der Post-Typ hierarchisch ist.

Es gibt ein paar Möglichkeiten, dies anzugehen:

  1. Verwenden Sie /%post_id%-%postname%/ anstelle von /%post_id%/%postname%/ ; das macht es einzigartig und wird daher keine nervigen -N an das Ende Ihrer URLs anhängen und Ihnen eine leichte Verbesserung der SEO geben, da die wichtigen Keywords im Root der Website und nicht in einer Ebene unterhalb des Verzeichnisses liegen. Oder

  2. Wenn Sie die von Ihnen angegebene URL-Struktur haben müssen, können Sie einfach Ihren Permalink auf /%post_id%/ und die 'post_link' und 'init' , um den Post-Namen an die URL anzuhängen und ein Permastruct hinzuzufügen Das passt zu einer post_id , einem Schrägstrich und allem nach dem Schrägstrich, aber wirft die letzten zwei weg, weil sie nicht mit der Permalink-Struktur verwendet werden:

 add_filter('post_link', 'mysite_post_link',10,2); function mysite_post_link($permalink,$post) { $post = get_post($post); return "{$permalink}{$post->post_name}/"; } add_action('init', 'mysite_init'); function mysite_init() { global $wp_rewrite; $wp_rewrite->add_permastruct("user_submitted_post", '%post_id%/.*?', 'p=matches[1]'); $wp_rewrite->flush_rules(); // This line is only needed once } 

Versuche dies:

 add_filter('wp_insert_post_data', 'remove_slug_suffix'); function remove_slug_suffix($data) { if ('post' == $data['post_type']) $data['post_name'] = preg_replace('/-\d+$/', '', $data['post_name']); return $data; }