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');
?>