Per-Permalink-Struktur für Seitenpostentyp

Ich versuche, .htm so zu schreiben, dass sie mit .htm

Ich konnte das mit …

 /* Add .htm extension to Page URL Links */ add_action('init', 'htm_page_permalink', -1); function htm_page_permalink() { global $wp_rewrite; if ( !strpos($wp_rewrite->get_page_permastruct(), '.htm')){ $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.htm'; } } /* Remove the trailing slash/ on Pages */ add_filter('user_trailingslashit', 'no_page_slash',66,2); function no_page_slash($string, $type){ global $wp_rewrite; if ($wp_rewrite->using_permalinks() && $wp_rewrite->use_trailing_slashes==true && $type == 'page'){ return untrailingslashit($string); }else{ return $string; } } 

Aber dann stieß ich auf ein Problem, bei dem ich meine Blog Beitragsliste auf einer Seite namens Blog . Ich brauche diese Seite, um nicht mit .htm zu .htm

Also habe ich dann diesen Code benutzt, um die Page Links zu ändern, um die .htm auf meiner blog Seite .htm

 /* Filter .htm out of Blog Page Links */ function blog_page_url($content) { $current_path = '/blog.htm'; $new_path = '/blog/'; $content = str_replace($current_path, $new_path, $content); return $content; } add_filter('_get_page_link', 'blog_page_url'); 

Und ich habe diese Re-Write-Regel verwendet, um die Blog Page zu erstellen /blog/ laden …

 /* Setup Custom Re-write for the Blog Page */ add_action( 'init', 'blog_page_rewrite' ); function blog_page_rewrite(){ add_rewrite_rule('blog', 'index.php?pagename=blog','top' ); //add_rewrite_rule('blog/(.*?)/', 'index.php?p=$matches[1]','top' ); } 

Aber jetzt habe ich das Problem, dass jede URL mit dem /blog/ darin die Blog page anzeigt.

Das bedeutet meinen aktuellen Blogbeitrag, der in WP Permalink Einstellungen wie diesem eingerichtet ist …

/blog/%postname%/ funktionieren nicht, stattdessen zeigen sie immer die Blog page die alle Blog-Posts /blog/%postname%/ .

In meiner blog_page_rewrite() -function oben können Sie sehen, dass ich eine extra Regel zum erneuten Schreiben getestet hatte, um hoffentlich mit den Blog-Posts zu arbeiten, aber es hatte keine Auswirkungen.

Solutions Collecting From Web of "Per-Permalink-Struktur für Seitenpostentyp"

Ist Ihre Blog-Seite diejenige, die im Settings > Reading > Posts page ? Wenn ja, versuchen Sie dies in Ihrer ersten function zu überprüfen:

 /* Add .htm extension to Page URL Links */ add_action('init', 'htm_page_permalink', -1); function htm_page_permalink() { global $post; if( get_option( 'page_for_posts' ) == $post->ID ) { // don't add .htm to this page return; } global $wp_rewrite; if ( !strpos($wp_rewrite->get_page_permastruct(), '.htm')){ $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.htm'; } } 

Die page_for_posts wies mich auf page_for_posts .