初心者webデザイナー・コーダーのための備忘録|Tech Stock 【テックストック】

Breadcrumb NavXTでカテゴリーのURLに「?post_type=○○○○」が付く問題の対策

> WordPress

こんにちは。管理人です。

今回は、Wordpress管理者ご用達のパンくずリストプラグイン「Breadcrumb NavXT」を使った時にカテゴリーページのURLに「?post_type=(カスタム投稿タイプのスラッグ)」がついてしまう問題を解決する方法を紹介します。

「解決」といっても「 ?post_type=○○○○」の部分を削除して出力する方法なんですけどね(汗)

この方法しか私の技量では到達できませんでしたので、そのほかの方法がありましたらコメントなどいただけると幸いですm(_ _)m

今回参考にさせていただきました記事を紹介しておきます。

作成したカスタム投稿タイプをすべて出力する方法を教えていただきました。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

http://weble.org/2011/09/01/getting-custom-post-types


パンくずリストを変数に格納できることを教えていただきました。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

https://tenman.info/labo/snip/archives/3761


戦略

今回の戦略は以下の通りです。

  1. Breadcrumb NavXTで作ったパンくずリストを変数に格納
  2. 全ての投稿タイプを配列に格納
  3. 上記1の変数に含まれる「?post_type=○○○○」を上記2を使って空白「」に書き換える(つまり削除する)

では早速いってみましょう!


Breadcrumb NavXTで作ったパンくずリストを変数に格納

では、さっそくパンくずリストを変数に格納しましょう。

<?php
if ( function_exists( 'bcn_display' ) ) {
	$my_breadcrumb = bcn_display(true); //パンくずリストを変数に格納
	echo $my_breadcrumb; //格納したパンくずリストを出力できる
}
?>

これでパンくずリストを変数に格納することができました。

次に、パンくずリストに含まれている「?post_type=○○○○」を削除するため、すべての 投稿タイプを取得して、 配列に格納する方法をお伝えします。

投稿タイプをすべて取得して「?post_type=○○○○」の配列を作る

下記のように記述すると「?post_type=○○○○」の「○○○○」のところにカスタム投稿タイプのスラッグが入った配列を作ることができます。

<?php
$postType = get_post_types(Array('public' => true)); //投稿タイプをすべて取得し配列に格納
$postType_parameter = array(); //投稿タイプの数だけ「?post_type=○○○○」を格納する配列を準備
foreach($postType as $postType_loop){
	$make_parameter = '?post_type='.$postType_loop; //「?post_type=○○○○」という文字列を作成し変数に格納
	$postType_parameter[] = $make_parameter; //上で作成した「?post_type=○○○○」を準備していた配列に格納(追加?)していく
}
print_r($postType_parameter); //配列を出力して確認
?>

出力したらこんな感じ ↓ ↓ ↓

Array ( 
[0] => ?post_type=post 
[1] => ?post_type=page 
[2] => ?post_type=product 
[3] => ?post_type=area 
) 


変数に格納したパンくずリストに含まれる「?post_type=○○○○」を空白「」に書き換える

いよいよ、パンくずリストに入っている「?post_type=○○○○」を削除する時が来ました!!

<?php
//変数$my_breadcrumb に含まれる「?post_type=○○○○」という文字列を、配列$postType_parameter を使って空白「」に書き換える
echo $my_breadcrumb = str_replace($postType_parameter, '', $my_breadcrumb);
?>

これで書き換わったパンくずリストが出力されているはずです。

一応、すべてのソースをまとめて書いておきます。

下記をまるまるコピペしたら、Breadcrumb NavXTでカテゴリーのURLに「?post_type=○○○○」が付いてしまう問題を解決できると思います。

どうぞご活用ください。m(_ _)m

<?php
if ( function_exists( 'bcn_display' ) ) { //パンくずリストを変数に格納
	$my_breadcrumb = bcn_display(true); //格納したパンくずリストを出力できる
}

$postType = get_post_types(Array('public' => true)); //投稿タイプをすべて取得し配列に格納
$postType_parameter = array(); //投稿タイプの数だけ「?post_type=○○○○」を格納する配列を定義

foreach($postType as $postType_loop){
	$make_parameter = '?post_type='.$postType_loop; //「?post_type=○○○○」という文字列を作成し変数に格納
	$postType_parameter[] = $make_parameter; //上で作成した「?post_type=○○○○」を準備していた配列に格納(追加?)していく
}

//変数$my_breadcrumb に含まれる「?post_type=○○○○」という文字列を、配列$postType_parameter を使って空白「」に書き換える
echo $my_breadcrumb = str_replace($postType_parameter, '', $my_breadcrumb); 
?>

関連記事

【WordPress】ネットいらず?!ローカルでワードプレスを動かしてオリジナルテーマをカスタマイズする方法
XAMPとかMAMP以外にWordPressをローカル環境でカスタマイズできたらいいのになぁーと思って何となく検索してみたら余裕で見つかった
【ページネーション】WP-PageNaviをアーカイブページで表示させる方法
こんにちは。 管理人です。 かなり前から問題だったんですが、記事一覧ページ、アーカイブページ(archive.php)で下のようなページネー
Smart Custom Fields愛用者が常用する全カスタムフィールド出力方法
私の仕事柄、WordPressでサイトを1からカスタマイズして作ったりリニューアルのメンテナンスやカスタマイズ仕直しの業務が多々あり、毎回非
【WordPress】必ず入れるプラグインと設定【随時更新】
こんにちは。TechStock管理人です。 今回は、Wordpressでwebサイトを作る際に必ずと言っていいほど導入する、プラグインを紹介
【コピペ可】非プラグイン依存!カスタムフィールド出力の統一した書き方
私が知っているメジャーなカスタムフィールド系プラグインは以下の3つです。 Advanced Custom FieldsSmart Custo
サーバーを圧迫する画像を圧縮するプラグイン「Compress JPEG & PNG images」が神ってる件について
こんにちは。管理人です。 私のようなドケチな人にとっては、サーバー代やドメイン代でさえもったいないと感じます。 (そのせいでアドセンスの認証



“Breadcrumb NavXTでカテゴリーのURLに「?post_type=○○○○」が付く問題の対策” への2件のフィードバック

  1. おさむ より:

    単一記事ページのパンくずリストのカテゴリリンクに変な変数が付与されてるのに気づき「post_type= Breadcrumb NavXT」でググってきました。

    当方phpは分かりませんが最後のスクリプトのコピペで無事に解決出来ました。

    このページがなかったら絶対に解決出来ませんでした(汗)

    この度は情報有り難う御座いますした!

    • techstock@admin より:

      コメントありがとうございます!^^*
      コピペ用に最後にPHPプログラムの全文を書いておいて正解でしたね♪
      お役に立てて幸いです( *´艸`)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です