Präfix, um Permalinks zu posten, ohne die Kategoriepermas zu beeinflussen

Ich versuche, meine Links so zu machen:

site.com/article-sample-post 

als “article” ist ein festes Präfix und “sample-post” ist die post-slug ..

aber dieses Präfix wirkt sich auf die Kategorielinkstruktur aus und macht es so:

 site.com/article-category/sample-cat 

was nicht erwünscht ist!

meine Frage: Gibt es einen einfachen Hack oder ein Plugin, damit ich Permalinks wie folgt arbeiten kann:

 site.com/article-sample-post site.com/sample-cat 

Vielen Dank,

Solutions Collecting From Web of "Präfix, um Permalinks zu posten, ohne die Kategoriepermas zu beeinflussen"

Wenn Sie die Kategorie base /category/ entfernen möchten, können Sie das WP no category base plugin installieren, das eine neue Reihe von Rewrite-Regeln für Kategorien hinzufügt. Der Nebeneffekt davon ist, dass Sie Ihre post-Permalinks auf /article-%postname%/ und keine Kategorie-Permalinks mehr bewirken. es wird jedoch weiterhin Tags beeinflussen.

Ihre andere Option, oder in Verbindung mit dem obigen Plugin, besteht darin, post_link zu filtern, um das article- hinzuzufügen, und dann eingehende Anfragen zu modifizieren, um dieses Präfix zu entfernen, damit WordPress den Beitrag finden kann:

 add_filter( 'post_link', 'wpa68069_post_prefix' ); function wpa68069_post_prefix( $url ) { $prefix = 'article-'; $parts = explode( '/', $url ); return home_url( '/' ) . $prefix . $parts[ count( $parts ) - 2 ] . '/'; } add_action( 'parse_request', 'wpa68069_parse_request' ); function wpa68069_parse_request( $request ){ if( !isset( $request->query_vars['name'] ) ) return $request; if( false !== strpos( $request->query_vars['name'], 'article-' ) ) $request->query_vars['name'] = substr( $request->query_vars['name'], 8 ); return $request; } 

Diese einfache function fügt /articles vor jedem Postlink hinzu. http://www.example.com/my-new-one-post/ wird zu http://www.example.com/articles/my-new-one-post/ wechseln

Ich habe Permalink Struktur auf /%postname%/ . Links wie http://www.example.com/new-article

 add_filter( 'post_link', function ($url) { $parts = parse_url($url); if ($parts['path']) $parts['path'] = '/articles' . $parts['path']; $parts['scheme'] .= '://'; if (isset($parts['query'])) $parts['query'] = '?' . $parts['query']; if (isset($parts['port'])) $parts['port'] = ':' . $parts['port']; if (isset($parts['fragment'])) $parts['fragment'] = '#' . $parts['fragment']; return implode('', $parts); } ); 

Der Vorteil dieser Lösung besteht darin, dass Vorschaulinks und kurze Links (http://www.example.com/articles/?p=3677) ebenfalls gut funktionieren.