うまくいかなかったこと

question mark, a notice, duplicate-2405197.jpg

最近、うまくいかなかったことを共有します。

圧倒的に経験が不足しているので、うまくいかない原因が分からないこともしばしば。

ああでもないこうでもないとトライ&エラーを繰り返しながら少しずつ解決に近づいていきます。

このようにブログにすると、記憶に定着させることができるので、おすすめです。

画像が表示されないのはMixed Contentが原因かも

最初のHTMLがセキュリティで保護されているHTTPS 接続を介して読み込まれていても、他のリソース(画像、動画、スタイルシート、スクリプトなど)がセキュリティで保護されていないHTTP 接続を介して読み込まれる場合に起こります。

開発者ツールで要素を選択してからコンソールを開くとエラーが出ているはずなので、表示されないリソースがあるときは、確認してみてください。

画像とページのプロトコルの確認は必須と肝に銘じました。

Chromeの設定に[常に安全な接続を使用する]というものがあり、すべてのサイトの読み込みにHTTPSを優先して使用するよう設定できるので、これについても注意が必要だなと思いました。

というのも、サイトをSSL化していなくても、サーバーでSSL設定をしていると、HTTPSが優先されてしまう可能性があるからです。

SSL化していないクライアントのサイトを自分のサーバーでテストするときは、気を付けてください。

Lightningのtitleが書き換わらないときはフックの優先順位とVK All in One Expansion Unitを見直そう

Lightningを使用している場合、title要素を変更できない原因は2つ考えられます。

1つは、フックを実行するときの優先順位です。

他のテーマでは書き換わるのに、Lightningだとダメだったので、検索ワードにLightningを追加。そうして見つけたのがVektor Trainingのページです。

Lightning の 404ページの見出し・パンくずを書き換える・コンテンツエリア上下の余白を無くす | ベクトレ

優先順位を12に変えたらできました!!

もう1つの原因は、VK All in One Expansion Unitです。

[ExUnit]>[有効化設定]を開くと[タイトルタグの書き換え]というオプションがあるので、これをオフにします。

このオプションは、head titleタグ内へ出力される内容をVK EX Unit のルールで出力します。(VK EX Unit 側で wp_title() をフィルターフックでカスタマイズ)使用中のテーマやプラグインでtitleタグの内容を出力する場合はチェックを外して下さい。

このことから学んだのは、次の3つです。

  1. 他のテーマで試してみる
  2. 実行するときの優先順位を変えてみる
  3. プラグインが関係している可能性もある

サイトにログインできなくなるのはDBにコードが残ってしまうからだった

久しぶりにやってしまいました。

titleが書き換わらなので、自暴自棄になって、てきとうな関数を打ち込んで保存した結果がこれです。

Code Snippetsを使ってPHPコードを書いていたので、プラグインを削除すれば大丈夫と思っていたのですが、再インストールして有効化したら、またログインできなくなり、焦りました。

調べたところ、プラグインを削除してもDBにコードが残っているということが分かりました。

Code Snippetsを使うときは、[フロントエンドのみで実行]を選択して保存するようにしようと、猛省しました。

面倒ごとは、なるべく避けたいですから・・・

DBつながりで、思い出したことがあります。

WordPressをアンインストールしたときにDBも削除していますか?

フォルダと.htaccessファイルも残ってしまうので、削除しましょう。

おまけ

これらのトラブルは、ブラウザーのタブに表示されるファビコンとタイトルを特定のページでのみ書き換えたくて試行錯誤しているときに起きたものです。

せっかくなので完成したコードを共有します。

ページ指定

特定のページにのみコードを実行したいときは、is_page()を使います。

この関数のパラメーターは、チェック対象のページ ID、タイトル、スラッグ、またはそれらの配列です。

複数のページを指定するときは配列にします。これ大事なポイントです。

ページIDはどのページなのか分かり難いので、私はスラッグを使います。

if( is_page( array( 'slug1', 'slug2', 'slug3' ) ) ) {
    // これら3つのページで実行するコード
}

ファビコン/サイトアイコンの書き換え

[外観]>[カスタマイズ]からサイトアイコンを設定すると、4つの異なるサイズの画像が自動生成されます。

すでに設定されているサイトアイコンは変更したくないので、自分でサイズ違いの画像を作成してアップロードします。

画像形式はPNGで、画像サイズは32x32px、180x180px、192x192px、270x270pxの4つです。

関数を使って画像のURLを取得することも可能ですが、ベタ打ちでも問題ないです。

wp_upload_dir()は、現在のアップロード ディレクトリのパスとURLを含む配列を返します。

[設定]>[メディア]の[アップロードしたファイルを年月ベースのフォルダーに整理]というオプションががオンになっていると、サブディレクトリ(年/月フォルダ)が「現在」の値になるので注意しましょう。年や月が変わると、アップロードした画像が見つからないなんてことになってしまいます。

また、アップロードした画像のURLを必ず確認しましょう。画像ファイル名が書き換わることがあります。

ファビコンの書き換えは、site_icon_meta_tagsを使います。

$meta_tagsはサイトアイコンのメタタグの配列なので、一つずつ書き換えていきます。

最後に$meta_tagsを返すことをお忘れなく。

add_filter( 'site_icon_meta_tags', function( $meta_tags ){
	if( is_page( array( 'slug1', 'slug2', 'slug3' ) ) ) {
		$upload_dir = wp_upload_dir();
		$upload_base_url = $upload_dir['baseurl'];
		$upload_sub_dir = '/2023/02/';
		$favicon_base_url = $upload_base_url . $upload_sub_dir;
		$meta_tags[0] = sprintf( '<link rel="icon" href="%s" sizes="32x32" />', esc_url( $favicon_base_url.'favicon-32x32.png' ) );
		$meta_tags[1] = sprintf( '<link rel="icon" href="%s" sizes="192x192" />', esc_url( $favicon_base_url.'favicon-192x192.png' ) );
		$meta_tags[2] = sprintf( '<link rel="apple-touch-icon" href="%s" />', esc_url( $favicon_base_url.'favicon-180x180.png' ) );
		$meta_tags[3] = sprintf( '<meta name="msapplication-TileImage" content="%s" />', esc_url( $favicon_base_url.'favicon-270x270.png' ) );		
	}
	return $meta_tags;
} );

タイトルの書き換え

pre_get_document_titleの他に、区切り記号を変更するdocument_title_separatorや、タイトルの一部を変更するdocument_title_partsもあります。

サイトのタイトルだけを書き換えたい場合は、次のように書きます。

add_filter( 'document_title_parts', function( $title ) {
	if( is_page( array( 'slug1', 'slug2', 'slug3' ) ) ) {
		$title['title'] = 'abc';
	}
	return $title;
});

コメントする