私個人的に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>