💭
【PHP】パンくずリスト(2022年12月5日業務報告)
パンくずリストを画面上部に表示
【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簡単移行」を利用。
Siteguardでログインにひらがな認証を設定していると失敗するので、一旦Siteguardは無効にしてから行う。
ただし、私の場合は上記でもエラーが改善せず、移行元のXserverの設定を見直す必要がありました。
1.移行元のサーバーパネルから「WordPressセキュリティ設定」を開き、該当のドメインの「選択する」をクリックします。
2.「国外IPアクセス制限設定」で設定をすべてOFFにします。
が、これでも改善しなかったので、
3.「ログイン試行回数制限設定」をOFFにします。
これにより作業が先に進みました。
おそらく何度も簡単移行に失敗したことで、ログイン試行回数制限に引っかかってしまったのだと思われます。
移行のための一時的な無効設定なので、移行が終わった後も移行元サーバーにWordpressを残す場合は設定をもとに戻してください。
※移行完了後、該当のURLを開いても無効なURLとなる場合は、しばらく待つと正しく表示されるようになります。
移行元サーバーからWordPressをDBごと削除する
ローカル環境のWordPressが起動しなくなった
一度、「.htaccess」をSSL仕様に書き換えてしまったら、設定を元に戻しても「https」にリダイレクトされるようになってしまった。
- 「.htaccess」を戻してDockerコンテナを再起動→ダメ
- ブラウザのキャッシュクリア→ダメ
https://pointsandlines.jp/env-tool/wordpress/disable-https-redirect-dev-local - HSTSが原因→削除するドメインを「localhost:3001」と「localhost」で試してみたけどダメ
https://i-think-it.net/chrome-http-https-force-redirect-approache/
Discussion