Расширение .html в WordPress

Расширение .html в WordPress


Очередной заказ на создание сайта и клиент изъявил желание, чтобы все адреса сайта заканчивались расширением .html как же сделать это в WordPress? На самом деле не сложно. В WordPress существует несколько типов записей: статьи, страницы и если например как в моём случаи ещё страницы магазина.

Расширение .html в WordPress для записи.

Для записей (постов) WordPress задаём расширение через функционал самого движка WordPress, а именно переходим в раздел админки «Постоянные ссылки» и добавляем вот такой способ отображения записей сайта:

/%postname%.html
расширение .html для записи WordPress
расширение .html для записи WordPress

Расширение .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 );

Напишите свой комментарий