Wordpressで新規サイト作成時に使用するコードいろいろ（個人的）

私個人的にWPで新規でサイトを作成する時に使うコード一覧

```common.js
$(function(){

    //ハンバーガーメニュー
    $('.header-btn').click(function(){
    	$('body').toggleClass('active');
    });

    //スムーズスクロールリンク
	var adjust = 20;
	var speed = 400;
    var urlHash = location.hash;
    //異なるページにリンクする場合
    if(urlHash) {
    $('body,html').stop().scrollTop(0);
    setTimeout(function(){
        var target = $(urlHash);
        var position = target.offset().top - adjust;
        $('body,html').stop().animate({scrollTop:position}, speed);
    }, 100);}
    //同ページ
    $('a[href^="#"]').click(function(){
        var href= $(this).attr("href");
        var target = $(href == "#" || href == "" ? 'html' : href);
        var position = target.offset().top - adjust;
        $('body,html').animate({scrollTop:position}, speed, 'swing');
        return false;
    });
});
```
```funcitons.php

//WPのjQueryはadminページ以外読ませない
add_action('wp_print_scripts','notimport_script',100);
function notimport_script() {
	if (!is_admin()) {
		wp_deregister_script('jquery'); 
	}
}

//基本的なcssとjs読み込み
function my_scripts() {
	wp_enqueue_style( 'style',  get_template_directory_uri().'/css/style.css',false,filemtime(get_stylesheet_directory().'/css/style.css'),false);
	wp_enqueue_style( 'slick-theme-tyle', '//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick-theme.min.css');
	wp_enqueue_style( 'slick-style', '//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css');
	wp_enqueue_script( 'jQuery_cdn', '//code.jQuery.com/jQuery-3.5.1.min.js');
	wp_enqueue_script( 'slick_cdn', '//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js');
}
add_action( 'wp_enqueue_scripts', 'my_scripts' );

//PHPエラーを出力しない
error_reporting(0);

//自動更新を無効にする
add_filter( 'automatic_updater_disabled', '__return_true' );

//テーマURLショートコード
add_shortcode('gtdu', 'shortcode_gtdu');
function shortcode_gtdu() {
return get_template_directory_uri();
}

//GNB ilにクラス・ID削除（カレントはそのまま）
add_filter('nav_menu_css_class', 'menu_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'menu_attributes_filter', 100, 1);
add_filter('page_css_class', 'menu_attributes_filter', 100, 1);
function menu_attributes_filter($var) {
return is_array($var) ? array_intersect($var, array('current-menu-item')) : '';
}

//固定ページのみ自動的に付与されるpタグやbrタグを無効
function disable_page_wpautop() {
if ( is_page() ) remove_filter( 'the_content', 'wpautop' );
}
add_action( 'wp', 'disable_page_wpautop' );

//404エラーをトップページに
add_action( 'template_redirect', 'is404_redirect_home' );
function is404_redirect_home() {
  if( is_404() ){
    wp_safe_redirect( home_url( '/' ) );
    exit();
  }
}

//固定ページにページングを追加した場合、そのページはリダイレクトさせない
add_filter('redirect_canonical','my_disable_redirect_canonical');
function my_disable_redirect_canonical( $redirect_url ) {
    if ( is_page('news-blog'))
    $redirect_url = false;
    return $redirect_url;
}

//categoryを削除する
function remcat_function($link) {
	return str_replace("/category/", "/", $link);
}
add_filter('user_trailingslashit', 'remcat_function');
	function remcat_flush_rules() {
		global $wp_rewrite;
		$wp_rewrite->flush_rules();
}
add_action('init', 'remcat_flush_rules');
	function remcat_rewrite($wp_rewrite) {
		$new_rules = array('(.+)/page/(.+)/?' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2));
		$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_filter('generate_rewrite_rules', 'remcat_rewrite');

//固定ページBodyのclassに、page-slug 追加
function pagename_class($classes = '') {
	if (is_page()) {
	$page = get_page(get_the_ID());
	$classes[] = 'page-'.$page->post_name;
	}
	return $classes;
   }
add_filter('body_class','pagename_class');

```
```archive.php
//カスタム投稿のカテゴリー一覧表示：リンク無し
<ul>
	<?php
		$terms = get_terms('categories'); //categories=カテゴリーのターム
		foreach ( $terms as $term ) {
			echo '<li>'.$term->name.'</li>';
		}
	?>
</ul>

//カスタム投稿のカテゴリー一覧表示：リンク有り
<ul>
	<?php
		$terms = get_terms('categories');
		foreach ( $terms as $term ) {
			echo '<li><a href="'.get_term_link($term).'">'.$term->name.'</a></li>';
		}
	?>
</ul>

//カスタム投稿のカテゴリー一覧表示：投稿0でも表示
<ul>
	<?php
		$terms = get_terms('categories','hide_empty=0'); //空のタームも出力
		foreach ( $terms as $term ) {
			echo '<li><a href="'.get_term_link($term).'">'.$term->name.'</a></li>';
		}
	?>
</ul>

//各タームにクラスを追加する
<ul>
	<?php
		$terms = get_terms('categories');
		foreach ( $terms as $term ) {
			echo '<li><a href="'.get_term_link($term).'" '.'class="'.esc_attr($term->slug).'">'.$term->name.'</a></li>';
		}
	?>
</ul>