Очередной заказ на создание сайта и клиент изъявил желание, чтобы все адреса сайта заканчивались расширением .html как же сделать это в WordPress? На самом деле не сложно. В WordPress существует несколько типов записей: статьи, страницы и если например как в моём случаи ещё страницы магазина.
Расширение .html в WordPress для записи.
Для записей (постов) WordPress задаём расширение через функционал самого движка WordPress, а именно переходим в раздел админки «Постоянные ссылки» и добавляем вот такой способ отображения записей сайта:
/%postname%.html

Расширение .html в WordPress для страниц сайта.
Для страниц сайта можно скачать соответствующий плагин или же добавить следующий код в файл темы functions.php:
/* .html on PAGES */ add_action('init', 'html_page_permalink', -1); register_activation_hook(__FILE__, 'active'); register_deactivation_hook(__FILE__, 'deactive'); function html_page_permalink() { global $wp_rewrite; if ( !strpos($wp_rewrite->get_page_permastruct(), '.html')){ $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html'; } } 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; } } function active() { global $wp_rewrite; if ( !strpos($wp_rewrite->get_page_permastruct(), '.html')){ $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html'; } $wp_rewrite->flush_rules(); } function deactive() { global $wp_rewrite; $wp_rewrite->page_structure = str_replace(".html","",$wp_rewrite->page_structure); $wp_rewrite->flush_rules(); }
Расширение .html в WordPress для страниц магазина на Woocommerce.
Для того чтобы и товары магазина работающего на Woocommerce имели расширение такое же как и на всём сайте, то есть .html надо будет снова обратиться к файлу темы functions.php и добавить следующий небольшой код:
/*html woocommerce*/ function wpse_178112_permastruct_html( $post_type, $args ) { if ( $post_type === 'product' ) add_permastruct( $post_type, "{$args->rewrite['slug']}/%$post_type%.html", $args->rewrite ); } add_action( 'registered_post_type', 'wpse_178112_permastruct_html', 10, 2 );