自由帳シンプルライフに勤しむ凡人の日常

WPテンプレート

個人的によく使っているfunctions.phpの記述のメモです。
いろんなサイトから情報を得て作っているので、じわじわ改良を加えている。

後日もっと見やすく修正する。

<?php

// CSS
function add_files() {
	wp_enqueue_style( 'style', get_stylesheet_uri() );
}
add_action( 'wp_enqueue_scripts', 'add_files' );

// JS
if (!is_admin()) {
	// 管理画面以外のjQueryを解除
	function deregister_script(){	
		wp_deregister_script('jquery');
	}
	// 独自jQueryの出力設定
	function register_script(){	
		wp_register_script('jquery', get_template_directory_uri() . '/js/jquery-3.5.1.min.js', false, '', true );
		wp_register_script( 'js-picturefill', get_template_directory_uri() . '/js/picturefill.min.js', array( 'jquery' ), filemtime( get_template_directory() . '/js/picturefill.min.js' ), true);
		wp_register_script( 'js-common', get_template_directory_uri() . '/js/script.js', array( 'jquery' ), filemtime( get_template_directory() . '/js/script.js' ), true);
	}
	// 上で定義した内容の出力
	function add_script() {	
		deregister_script();
		register_script();
		wp_enqueue_script('jquery');
		wp_enqueue_script('js-picturefill');
		wp_enqueue_script('js-common');
		//出力したいページの設定:例news
		//if ( is_post_type_archive( 'news' ) ) {
		//	wp_enqueue_script('js-news');
		//}
	}
	add_action('wp_enqueue_scripts', 'add_script');
}

//不要なrel削除
//ショートリンク, wlwmanifest, application/rsd+xml, RSSフィードのURLの削除, 絵文字不使用, WPのバージョン情報を非表示
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'print_emoji_detection_script', 7 );
remove_action('wp_print_styles', 'print_emoji_styles', 10 );
remove_action('wp_head','wp_generator');

// アイキャッチ
add_theme_support('post-thumbnails');
set_post_thumbnail_size(1400,9999,true);
add_image_size( 's-size', 700, 9999, true );
add_image_size( 'm-size', 1000, 9999, true );
add_image_size( 'l-size', 1400, 9999, true );

//管理画面表示切り替え
function remove_menus() {
	remove_menu_page( 'index.php' ); // ダッシュボード
	remove_menu_page( 'edit.php' ); // 投稿
	remove_menu_page( 'upload.php' ); // メディア
	remove_menu_page( 'edit.php?post_type=page' ); // 固定
	remove_menu_page( 'edit-comments.php' ); // コメント
	remove_menu_page( 'themes.php' ); // 外観
	remove_menu_page( 'plugins.php' ); // プラグイン
	remove_menu_page( 'users.php' ); // ユーザー
	remove_menu_page( 'tools.php' ); // ツール
	remove_menu_page( 'options-general.php' ); // 設定
}
add_action( 'admin_menu', 'remove_menus' );


//カスタム投稿
function add_custom_post() {
	//カスタム投稿例:news
	register_post_type(
		'news',
		array(
			'labels' => [
				'name' => 'お知らせ',
				'singular_name' => 'news',
			],
			'public' => true,
			'publicly_queryable' => true,
			'has_archive' => true,
			'menu_position' => 5,
			'supports' => array(
				'title',// タイトル
				'editor',// 内容の編集
				'author',// 作成者
				'thumbnail',// アイキャッチ画像
				'excerpt',// 抜粋)
				'trackbacks',// トラックバック送信
				'custom-fields',// カスタムフィールド
				'comments',// コメントの他、編集画面にコメント数のバルーンを表示する
				'revisions',// リビジョンを保存する
				'page-attributes',// メニューの順序
				'post-formats',// 投稿のフォーマットを追加
			),
			'menu_icon' => 'dashicons-edit'
		)
	);
}
add_action('init', 'add_custom_post');

//カスタムタクソノミー
function add_taxonomy() {
	//タクソノミーカテゴリ
	register_taxonomy(
		'tax-cat',
		'tax',
			array(
			'label' => 'タクソノミーカテゴリ',
			'singular_label' => 'タクソノミーカテゴリ',
			'labels' => array(
				'all_items' => 'タクソノミーカテゴリ一覧',
				'add_new_item' => 'タクソノミーカテゴリを追加'
			),
			'public' => true,
			'show_ui' => true,
			'show_in_nav_menus' => true,
			'hierarchical' => true
		)
	);
	//タクソノミータグ
	register_taxonomy(
		'tax-tag',
		'tax',
		array(
			'label' => 'タクソノミータグ',
			'singular_label' => 'タクソノミータグ',
			'labels' => array(
				'all_items' => 'タクソノミータグ一覧',
				'add_new_item' => 'タクソノミータグを追加'
		),
		'public' => true,
		'show_ui' => true,
		'show_in_nav_menus' => true,
		'hierarchical' => true
		)
	);
}
add_action( 'init', 'add_taxonomy' );


//管理画面CSS
function custom_admin_style() {
	?><style>
	</style><?php
}
add_action( 'admin_head', 'custom_admin_style' );


// ページャー
add_filter('redirect_canonical','my_disable_redirect_canonical');
function my_disable_redirect_canonical( $redirect_url ) {
	if ( is_archive() ){
		$subject = $redirect_url;
		$pattern = '/\/page\//';
		preg_match($pattern, $subject, $matches);
		if ($matches){
		$redirect_url = false;
		return $redirect_url;
		}
	}
}


// OGP設定
function my_meta_ogp() {
if( is_front_page() || is_home() || is_singular() ){
global $post;
$ogp_title = '';
$ogp_descr = '';
$ogp_url = '';
$ogp_img = '';
$insert = '';
if( is_singular() ) {
setup_postdata($post);
$ogp_title = $post->post_title;
$ogp_descr = mb_substr(get_the_excerpt(), 0, 100);
$ogp_url = get_permalink();
wp_reset_postdata();
} elseif ( is_front_page() || is_home() ) {
$ogp_title = get_bloginfo('name');
$ogp_descr = get_bloginfo('description');
$ogp_url = home_url();
}
$ogp_type = ( is_front_page() || is_home() ) ? 'website' : 'article';
if ( is_singular() && has_post_thumbnail() ) {
$ps_thumb = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full');
$ogp_img = $ps_thumb[0];
} else {
$ogp_img = '画像URL';
}
$insert .= '<meta property="og:title" content="'.esc_attr($ogp_title).'" />' . "\n";
$insert .= '<meta property="og:description" content="'.esc_attr($ogp_descr).'" />' . "\n";
$insert .= '<meta property="og:type" content="'.$ogp_type.'" />' . "\n";
$insert .= '<meta property="og:url" content="'.esc_url($ogp_url).'" />' . "\n";
$insert .= '<meta property="og:image" content="'.esc_url($ogp_img).'" />' . "\n";
$insert .= '<meta property="og:site_name" content="'.esc_attr(get_bloginfo('name')).'" />' . "\n";
$insert .= '<meta name="twitter:card" content="summary_large_image" />' . "\n";
$insert .= '<meta name="twitter:site" content="" />' . "\n";
$insert .= '<meta property="og:locale" content="ja_JP" />' . "\n";
echo $insert;
}
}
add_action('wp_head','my_meta_ogp');

?>