カテゴリー: Web備忘録

サイト制作に関するカテゴリー

  • シンレンタルサーバーでGoogleサーチコンソールにサイトを登録する方法


    Googleサーチコンソールへのサイト登録手順を備忘録としてまとめました。まずはにアクセスしてください。Googleアカウントをお持ちでない方は、まずアカウントを作成してください。

    次に、ドメインかサブドメインを入力し、「続行」をクリックします。例: miengena.com または shop.miengena.com

    次の画面で「TXTレコード」が発行されますので、「コピー」をクリックしてコピーしてください。この画面をそのままにしておき、別の画面でシンレンタルの管理パネルにアクセスし、以下の手順に従ってください。

    1. 「ドメイン」⇒「DNSレコード設定」⇒「ドメイン名」を選択⇒「DNSレコード追加」をクリック
    2. DNSレコード追加画面で以下の項目を入力します。

      • ホスト名: 空白のままでOK
      • 種別: TXTを選択
      • 内容: 先ほどコピーしたDNSレコードを貼り付け
    3. 上記項目を入力したら、「確認画面へ進む」をクリックしてください。確認画面の内容に問題がなければ、「追加する」をクリックしてください。
    4. 次に、サーチコンソールの画面に戻り、「確認」をクリックします。DNSレコードが反映されるまで数分かかる場合があるので、DNSレコードを追加してから数分待ってから「確認」をクリックしてください。反映には5~10分ほどかかる場合があります。
    5. 「確認」をクリック後、確認が始まります。確認が完了したら、「完了」もしくは「プロパティに移動」をクリックしてください。

    以上でサーチコンソールへのサイト登録が完了です。お疲れ様でした(^^)

  • WordPressでソースコードを表示するPrism.jsを導入してみた

    当サイトのブログはソースコードを記述するのがメインなので記事本文にソースコードが記述できる方法を探してみました。

    プラグインでも良かったんですけど、なるべくプラグインを入れずに運用したいので評判の良さそうなprism.jsを導入することにしました。

    prismファイルの作成

    まずは下記のページにアクセスし、prismファイルを作成してダウンロードしてください。

    prism ダウンロード

    「テーマ」
    好きなテーマにチェック

    「圧縮タイプ」
    minified verにチェック

    「言語」
    デフォルトで選択しているものにプラスするだけ。このブログではPHPのソースコードを記述するので「PHP」の言語にチェックを入れて追加しました。PHPの項目が3つあったので分からないから3つともチェック。

    「プラグイン」
    ここではコピーボタンだけ欲しかったのでコピーボタンにだけチェックを入れて追加。

    あとはprism.jsとprism.cssをダウンロードしておわり。
    ※prism.jsの詳しい作成方法は詳しく書かれているブログを参照してください。

    prismファイルを組み込む

    ダウンロードした「prism.js」と「prism.css」をテーマディレクトリーにアップロードし、出力させたいheader.phpやfooter.phpなどのテーマファイルに記述します。

    prism.cssのタグ

    
    <link rel='stylesheet' id='prism-style-css' href='ドメイン/prism.css?ver=1.0' media='all' />
    

    prism.jsのタグ

    
    <script src="ドメイン/prism.js?ver=1.0" id="prism-script-js"></script>
    

    このブログはデフォルトテーマを使用していて、header.phpがないので、functions.phpに追加してます。必ずバックアップを取ってから試してください!!

    
    // prismファイル読み込み 
    function enqueue_prism_scripts() {
        wp_enqueue_style('prism-style', get_template_directory_uri() . '/prism.css', array(), '1.0', 'all');
        wp_enqueue_script('prism-script', get_template_directory_uri() . '/prism.js', array(), '1.0', true);
    }
    add_action('wp_enqueue_scripts', 'enqueue_prism_scripts');
    

    これでファイルが読み込まれるのでソースコードが記事に記述できます。

    ソースコードを書いてみる

    ソースコードは

    
    <pre><code class="language-xxx">
    ここにソースコードを記述
    </code></pre>
    

    このように「pre」と「code」で囲む必要がある。そして、ソースコードに応じて「code class」で言語を指定する。language-xxxのxxxにコードの言語を記述します。

    htmlを記述するなら
    language-markup

    phpを記述するなら
    language-php

    jsを記述するなら
    language-Javascript

    cssを記述するなら
    language-css

    他は使う言語に合わせてください。

    例えば

    
    <p>
    ここにPHPコード
    </p>
    

    この場合の言語はlanguage-phpで表示してます。

    そして、注意すべきはhtmlの、「<」と「>」の記述は「&lt;」と「&gt;」で記述しなくてはいけない。

    これでソースコードの記述方法は一通り完了。ただ、このままだとソースコードが折り返されない!調べたところ、デフォルトでは折り返し機能はないみたいなので参考ページからCSSで実装する方法を拝借。

    Prism.js はデフォルトでは行を折り返さない設定となっています。
    行を折り返すためには prism.css の設定を上書きします。
    code[class*=’language-‘] と pre[class*=’language-‘] に対して設定しないと行番号がズレます。

    
    code[class*='language-'],
    pre[class*='language-'] {
      white-space: pre-wrap !important;
    }
    

    これで無事にソースコードを記事に記述できるようになりました!

    僕は目が見えないので行番号や文字ハイライトなどはあっても識別できないのでコピーボタンだけ付けました。あとはソースコードに変な空白が出来たり半角全角が目視できないから心配ではあります・・・。ちゃんと、ここでコピーしたコードを貼り付けてテストはしてますが絶対ではないので・・・。

    あとは、応用編です。

    指定したカテゴリーで読み込む

    ウェブ関連以外のカテゴリーにprismファイルが読み込まれるとサイト高速化の妨げになるかもしれないので、指定したカテゴリーにだけprismファイルを読み込ませる方法をチャット君に作ってもらったので備忘録。

    
    // prismファイル読み込み
    function enqueue_prism_scripts() {
        // 現在の投稿がカテゴリーID 777に属しているかどうかをチェック
        if (has_category(777)) {
            // カテゴリーID 777に属している場合のみスタイルシートとスクリプトを読み込む
            wp_enqueue_style('prism-style', get_template_directory_uri() . '/prism.css', array(), '1.0', 'all');
            wp_enqueue_script('prism-script', get_template_directory_uri() . '/prism.js', array(), '1.0', true);
        }
    }
    add_action('wp_enqueue_scripts', 'enqueue_prism_scripts');
    

    このコードでは、has_category() 関数を使用して現在の投稿が指定したカテゴリーに属しているかどうかを確認し、カテゴリーID 777に属している場合にのみスタイルシートとスクリプトを読み込みます。
    ※カテゴリーIDは自身の環境に変更してください。

    カスタムフィールドで管理

    このブログはソースコードを記述することが多いと思うので、普段からprismファイルを読み込んでても大丈夫ですが、たまにしか記述しないのにずっとprismファイルが読み込まれてると高速化の妨げになるかも?

    次の2パターンをチャット君に作ってもらったので備忘録。

    1、通常は読み込ませず値が「オン」の時だけ読み込ませる。
    2、通常は読み込んでいて値が「オフ」の時だけ読み込ませない。

    まずは新規カスタムフィールドを作成する。
    キー 「prism_file_get」

    カスタムフィールドがオンの時だけ読み込む

    カスタムフィールドの値が “オン” の場合にのみスタイルシートとスクリプトを読み込むようにしています。通常はファイルを読み込みません。

    
    // prismファイル読み込み
    function enqueue_prism_scripts() {
        // カスタムフィールドの値を取得
        $prism_file_get = get_post_meta(get_the_ID(), 'prism_file_get', true);
        
        // カスタムフィールドが "オン" の場合のみスクリプトを読み込む
        if ($prism_file_get === 'オン') {
            wp_enqueue_style('prism-style', get_template_directory_uri() . '/prism.css', array(), '1.0', 'all');
            wp_enqueue_script('prism-script', get_template_directory_uri() . '/prism.js', array(), '1.0', true);
        }
    }
    add_action('wp_enqueue_scripts', 'enqueue_prism_scripts');
    

    カスタムフィールドがオフの時は読み込まない

    以下のコードでは、カスタムフィールドの値が “オフ” の場合にはスタイルシートとスクリプトが読み込まれないようになります。通常は読み込まれた状態です。

    
    // prismファイル読み込み
    function enqueue_prism_scripts() {
        // カスタムフィールドの値を取得
        $prism_file_get = get_post_meta(get_the_ID(), 'prism_file_get', true);
        
        // カスタムフィールドが "オフ" の場合のみスクリプトを読み込まない
        if ($prism_file_get !== 'オフ') {
            wp_enqueue_style('prism-style', get_template_directory_uri() . '/prism.css', array(), '1.0', 'all');
            wp_enqueue_script('prism-script', get_template_directory_uri() . '/prism.js', array(), '1.0', true);
        }
    }
    add_action('wp_enqueue_scripts', 'enqueue_prism_scripts');
    

    以上です。お疲れ様でした(^^)

    注意

    この記事で記述されているコードは執筆時点での話です。 テストサイトで試してはいますが、それぞれ環境が異なりますので変更を加える前に、 確実にバックアップを取得し、変更がサイトの動作に与える影響を十分にテストしてください。 あまり詳しくない方はプラグインを推奨します!自己責任でお願いします!!

  • WordPress: noindexあれこれ

    今回はロボットメタタグをプラグイン無しで実装する方法を調べてみました。

    参考にしたコードと、チャットで作ったコードです。執筆時点でテスト環境、自分のブログ、このサイトで使用しています。

    □執筆時点
    WP 6.4.3
    テーマ デフォルトテーマ Twenty Twenty-Four

    実装したかった事として、noindexを出力するのが、カテゴリー、アーカイブ、投稿者、検索結果、404。投稿タグは使わないのでタグページは必要ないかと。あと、投稿ごとにnoindexにするかをカスタムフィールドで設定できること。

    書くページにnoindex

    まず、ページでnoindexを指定する方法を複数試しましたが、次の参考ページが自分の環境では合っていたので利用させていただきました。

    参考ページ;[WordPress] 特定のページでnoindexを出力する方法 | Takemi Blog

    
    // 特定ページでnoindexを出力
    add_filter( 'wp_robots', function( array $robots ) {
      if ( is_archive() || is_paged() || is_attachment() || is_date() || is_author() || is_search() || is_404() || is_page( array('') ) ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
            remove_filter( 'wp_robots', 'wp_robots_max_image_preview_large' );
      }
    
      return $robots;
    }, 2 );
    

    まず、トップページは noindex でなくてもいいので「is_home()」を削除して、固定ページも今のところ noindex でなくていいので、「is_page( array(”)」の「”」の中を削除、そして、自分の環境ではデフォルトで出力される?max_image_preview_largeを出力させないように「 remove_filter( ‘wp_robots’, ‘wp_robots_max_image_preview_large’ );」を追加。

    これで、トップページ、投稿ページ、固定ページ以外は noindex になるように設定できました。次はカスタムフィールドで投稿ページごとに noindex を設定する方法です。

    投稿ごとにnoindex

    まず、下記のコードを functions.php に追加する。次に、投稿作成ページでカスタムフィールドを追加。

    カスタムフィールド名; noindex
    値; 「オン」の時は noindex を出力する、カスタムフィールドを設定していない時は max_image_preview_large が出力される。

    
    // カスタムフィールドでnoindexを選択
    function custom_noindex_page() {
        if (is_home()) {
            // is_home の場合はカスタムフィールドの設定を無視する
            return;
        }
        
        // ページのカスタムフィールドから値を取得
        $noindex_value = get_post_meta(get_the_ID(), 'noindex', true);
    
        if ($noindex_value === 'オン') {
            // noindex フィールドがオンの場合は add_filter
            add_filter('wp_robots', 'wp_robots_no_robots');
            remove_filter('wp_robots', 'wp_robots_max_image_preview_large');
        } else {
            // noindex フィールドがオフの場合は remove_filter
            remove_filter('wp_robots', 'wp_robots_no_robots');
            add_filter('wp_robots', 'wp_robots_max_image_preview_large');
        }
    }
    
    add_action('wp', 'custom_noindex_page');
    

    参考ページ;WordPressでnoindexを設定する方法(functions.phpからの設定) | push.tokyo

    色々なコードを試しましたが、ロボットタグが2個出力されたりとなかなかうまくいかず、参考ページのコードをチャットに投げつけて、既存のコードと合体させたらうまく実装できたので採用
    「 remove_filter(‘wp_robots’, ‘wp_robots_no_robots’);が良かったのかな。分からないままだけど結果良し。

    そして、ここで noindex に設定した投稿が最新の投稿としてブログの1番上にあると、トップページが noindex になってしまう現象が起きたので、トップページ(is_home)では、このカスタムフィールドを無視するように修正してもらいました。チャット君ありがとう。

    というわけで、トップページ、投稿ページ、固定ページに加え、カスタムフィールドで「オン」にした投稿のみ noindex になるように設定できました。

    フィードにもnoindex

    最後に、Googleサーチコンソールに フィードをindex させないようにする方法があったので functions.php に追加してみた。

    
    // X-Robots-Tagを利用して feed に noindex を付与する
    add_action('template_redirect', function(){
        if ( is_feed() && headers_sent() === false ) {
            header( 'X-Robots-Tag: noindex, follow', true );
        }
    });
    

    以上です。お疲れ様でした(^^)

    注意

    この記事で記述されているコードは執筆時点での話です。 テストサイトで試してはいますが、それぞれ環境が異なりますので変更を加える前に、 確実にバックアップを取得し、変更がサイトの動作に与える影響を十分にテストしてください。 あまり詳しくない方はプラグインを推奨します!自己責任でお願いします!!