💭

【PHP】パンくずリスト(2022年12月5日業務報告)

2022/12/05に公開

パンくずリストを画面上部に表示

【function.php】

// パンくずリスト
function breadcrumb() {
  $home = '<li><a href="'.get_bloginfo('url').'" >HOME</a></li>';

  echo '<ul class="breadcrumb">';
  if ( is_front_page() ) {
    // トップページの場合
  }
  else if ( is_category() ) {
    // カテゴリページの場合
    $cat = get_queried_object();
    $cat_id = $cat->parent;
    $cat_list = array();
    while ($cat_id != 0){
      $cat = get_category( $cat_id );
      $cat_link = get_category_link( $cat_id );
      array_unshift( $cat_list, '<li><a href="'.$cat_link.'">'.$cat->name.'</a></li>' );
      $cat_id = $cat->parent;
    }
    echo $home;
    foreach($cat_list as $value){
      echo $value;
    }
    the_archive_title('<li>', '</li>');
  }
  else if ( is_archive() ) {
    // 月別アーカイブ・タグページの場合
    echo $home;
    the_archive_title('<li>', '</li>');
  }

  else if ( is_single() ) {
    // 投稿ページの場合
    $cat = get_the_category();
      if( isset($cat[0]->cat_ID) ) $cat_id = $cat[0]->cat_ID;
      $cat_list = array();
      while ($cat_id != 0){
        $cat = get_category( $cat_id );
        $cat_link = get_category_link( $cat_id );
        array_unshift( $cat_list, '<li><a href="'.$cat_link.'">'.$cat->name.'</a></li>' );
        $cat_id = $cat->parent;
      }
      foreach($cat_list as $value){
        echo $value;
      }
      the_title('<li>', '</li>');
  }
  else if( is_page() ) {
  // 固定ページの場合
  // 親子関係を取得
    $page = get_post();
    $parent_id = $page->post_parent;

  // パンくずリストのHTMLを出力
    echo $home;

    if ($parent_id) {
      // 親ページが存在する場合
      $breadcrumb = array();
      while ($parent_id) {
        $page = get_page($parent_id);
        $breadcrumb[] = '<a href="' . get_permalink($page->ID) . '">' . $page->post_title . '</a>';
        $parent_id = $page->post_parent;
      }
      $breadcrumb = array_reverse($breadcrumb);
      foreach ($breadcrumb as $crumb) {
        echo '<li>' . $crumb . '</li>';
      }
    }
      the_title('<li>', '</li>');
  }
  else if( is_search() ) {
  // 検索ページの場合
    echo $home;
    echo '<li>「'.get_search_query().'」の検索結果</li>';
  }
  else if( is_404() ) {
  // 404ページの場合
    echo $home;
    echo '<li>ページが見つかりません</li>';
  }
  echo "</ul>";
}

// アーカイブの余計なタイトルを削除
add_filter( 'get_the_archive_title', function ($title) {
  if ( is_category() ) {
      $title = single_cat_title( '', false );
  } elseif ( is_tag() ) {
      $title = single_tag_title( '', false );
  } elseif ( is_month() ) {
      $title = single_month_title( '', false );
  } elseif  ( is_tax() ) {
      $title = single_term_title( '', false );
  }	elseif (is_post_type_archive() ) {
		$title = post_type_archive_title( '',false );
  }
  return $title;
});

【各ページのヘッダー下に以下のコードを入れて呼び出し】

<?php breadcrumb(); ?>

 

デモ環境→本番環境にWordPress移行

Xserverの「WordPress簡単移行」を利用。
https://www.xserver.ne.jp/manual/man_install_transfer_wp.php

Siteguardでログインにひらがな認証を設定していると失敗するので、一旦Siteguardは無効にしてから行う。

ただし、私の場合は上記でもエラーが改善せず、移行元のXserverの設定を見直す必要がありました。

1.移行元のサーバーパネルから「WordPressセキュリティ設定」を開き、該当のドメインの「選択する」をクリックします。
WordPressセキュリティ設定

2.「国外IPアクセス制限設定」で設定をすべてOFFにします。
国外IPアクセス制限設定

が、これでも改善しなかったので、
3.「ログイン試行回数制限設定」をOFFにします。
ログイン試行回数制限設定

これにより作業が先に進みました。
おそらく何度も簡単移行に失敗したことで、ログイン試行回数制限に引っかかってしまったのだと思われます。

移行のための一時的な無効設定なので、移行が終わった後も移行元サーバーにWordpressを残す場合は設定をもとに戻してください。

※移行完了後、該当のURLを開いても無効なURLとなる場合は、しばらく待つと正しく表示されるようになります。
 

移行元サーバーからWordPressをDBごと削除する

https://ygkb.jp/6769#:~:text=データベースを削除する,-前のステップ&text=サーバーパネルの【データベース>,を控えておきます。&text=『削除』ボタンをクリックします。
 

ローカル環境のWordPressが起動しなくなった

一度、「.htaccess」をSSL仕様に書き換えてしまったら、設定を元に戻しても「https」にリダイレクトされるようになってしまった。

Discussion