WordPress6.9で「global-styles」を出力させない方法

Filed under: functions.php,wordpress — kdcs @ 2025年12月14日 日曜日

WordPress 6.9 では「global-styles」の出力方法が変更され、従来の wp_dequeue_style(‘global-styles’) が効かなくなったため「remove_action」で対応する方法。

functions.php

// wp_headで出力される'global-styles'を停止する(wp6.9~)-------------------------
add_action( 'wp_loaded', function() {
    remove_action( 'wp_enqueue_scripts', 'wp_enqueue_global_styles' );
    remove_action( 'wp_footer', 'wp_enqueue_global_styles', 1 );
});

固定ページとカスタム投稿タイプのスラッグが同じだと問題あり

Filed under: functions.php,wordpress — kdcs @ 2025年12月9日 火曜日

例で説明
固定ページに「bridal」というパーマリンクを付けた場合にカスタム投稿タイプも「bridal」で作ってしまうと競合してしまい、その結果https://~hogehoge/bridalでアクセスするとbridalのアーカイブテンプレートに飛ばされてしまい、固定ページが表示されない。

解決方法
「bridal」を固定ページで使う場合、「カスタム投稿タイプ bridal」のアーカイブページを別に指定してやると競合しない。

こちらを入れる
archiveを「bridal-list」などに書き換える

            'rewrite' => array('slug' => 'bridal-list'),
            'has_archive' => 'bridal-list',

こちらは通常のカスタム投稿タイプ作成

add_action('init', 'add_bridal_post_type');
function add_bridal_post_type() {
    $params = array(
            'labels' => array(
                    'name' => 'ブライダルプラン',
                    'singular_name' => 'ブライダルプラン',
                    'add_new' => '新規追加',
                    'add_new_item' => 'ブライダルプランを新規追加',
                    'edit_item' => 'ブライダルプランを編集する',
                    'new_item' => '新規ブライダルプラン',
                    'all_items' => 'ブライダルプラン一覧',
                    'view_item' => 'ブライダルプランを見る',
                    'search_items' => '検索する',
                    'not_found' => 'ブライダルプランが見つかりませんでした。',
                    'not_found_in_trash' => 'ゴミ箱内にブライダルプランが見つかりませんでした。'
            ),
            'public' => true,
            'has_archive' => true,
            'supports' => array(
                    'title',
                    'editor',
                    'author',
                    'custom-fields',
                    'thumbnail',
            ),
            'taxonomies' => array('bridal_category','bridal_tag')
    );
    register_post_type('bridal', $params);
}

こちらが対策後

add_action('init', 'add_bridal_post_type');
function add_bridal_post_type() {
    $params = array(
            'labels' => array(
                    'name' => 'ブライダルプラン',
                    'singular_name' => 'ブライダルプラン',
                    'add_new' => '新規追加',
                    'add_new_item' => 'ブライダルプランを新規追加',
                    'edit_item' => 'ブライダルプランを編集する',
                    'new_item' => '新規ブライダルプラン',
                    'all_items' => 'ブライダルプラン一覧',
                    'view_item' => 'ブライダルプランを見る',
                    'search_items' => '検索する',
                    'not_found' => 'ブライダルプランが見つかりませんでした。',
                    'not_found_in_trash' => 'ゴミ箱内にブライダルプランが見つかりませんでした。'
            ),
            'public' => true,
            'has_archive' => true,
            'supports' => array(
                    'title',
                    'editor',
                    'author',
                    'custom-fields',
                    'thumbnail',
            ),
            'taxonomies' => array('bridal_category','bridal_tag'),
            'rewrite' => array('slug' => 'bridal-list'),
            'has_archive' => 'bridal-list',
    );
    register_post_type('bridal', $params);
}

管理画面の投稿一覧に特定の投稿を先頭に表示させる方法

Filed under: functions.php,wordpress — kdcs @ 2025年12月2日 火曜日

投稿タイプと先頭固定したい記事のIDを入力

function my_admin_post_order( $orderby, $query ) {
    if ( is_admin() && $query->is_main_query() && $query->get('post_type') === 'banquet_plan' ) {
        $sticky_id = 324;
        global $wpdb;
        // 特定の投稿IDを最上部に、それ以外は通常の並び
        $orderby = "FIELD({$wpdb->posts}.ID, $sticky_id) DESC, {$wpdb->posts}.post_date DESC";
    }
    return $orderby;
}
add_filter( 'posts_orderby', 'my_admin_post_order', 10, 2 );

WordPressテーマ内のファイルに別ファイル読み込み「include」ほか

Filed under: php,wordpress — kdcs @ 2025年11月28日 金曜日

テーマ内のテンプレートファイルに別ファイルを読み込ませる場合、今までは「TEMPLATEPATH.」を使っていたが、WordPress 6.4.0 以降では 非推奨 になっているのでその代替の手法。

今までの記述

<?php include(TEMPLATEPATH.'/hogehoge.php'); ?>

その1.「include get_template_directory()」を使う

<?php include get_template_directory() . '/hogehoge.php'; ?>

その2.WordPress 標準のテンプレート読み込み関数「get_template_part() 」を使う

get_template_part('hogehoge');

hogehoge.phpが、hogehoge-news.phpのようにハイフン付きのファイル名の場合

get_template_part('hogehoge', 'news');

<?php 
/*
  list.php
  list-news.php
  を読み込む
*/
  get_template_part('list'); 
  get_template_part('list', 'news'); 

/*
  parts/list.php
  parts/list-news.php
  を読み込む
*/
  get_template_part('parts/list'); 
  get_template_part('parts/list', 'news'); 
?>

ブラウザがWebPに対応しているかどうかでWebPとjpgを使い分ける

Filed under: css,html — kdcs @ 2025年11月25日 火曜日

画像をコンテンツ内で使っているか(imgタグ)、背景画像として使っているか(cssで指定)によって分かれる

背景画像の場合はcssの「image-set()」で対応

.imgLayer01 {
  /* フォールバック用(JPEGなど汎用形式) */
  background-image: url("../images/slide_mv/sp01.jpg");
  /* モダンブラウザ用(WebP優先) */
  background-image: image-set(
    url("../images/slide_mv/sp01.webp") type("image/webp"),
    url("../images/slide_mv/sp01.jpg") type("image/jpeg")
  );
}

※Safari 12 以前や Chrome 67 以前などの古い WebKit 系ブラウザでは -webkit-image-set() が必要。
 (Safari 12 や Chrome 67 は 2018年リリースで約7年前のブラウザ)

.imgLayer01 {
  /* フォールバック用(JPEGなど汎用形式) */
  background-image: url("../images/slide_mv/sp01.jpg");
  /* 古いsafariとChromeのブラウザ用(WebP優先) */
  background-image: -webkit-image-set(
    url("../images/slide_mv/sp01.webp") type("image/webp"),
    url("../images/slide_mv/sp01.jpg") type("image/jpeg")
  );
  /* モダンブラウザ用(WebP優先) */
  background-image: image-set(
    url("../images/slide_mv/sp01.webp") type("image/webp"),
    url("../images/slide_mv/sp01.jpg") type("image/jpeg")
  );
}

コンテンツ内の画像の場合は「picture」タグで対応

<picture>
  <source srcset="../images/slide_mv/sp01.webp" type="image/webp">
  <img src="../images/slide_mv/sp01.jpg" alt="スライド画像">
</picture>

サイト内検索

カテゴリー

最近の投稿

↑上に戻る