こんにちは。管理人です。
今回は、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
戦略
今回の戦略は以下の通りです。
- Breadcrumb NavXTで作ったパンくずリストを変数に格納
- 全ての投稿タイプを配列に格納
- 上記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);
?>
単一記事ページのパンくずリストのカテゴリリンクに変な変数が付与されてるのに気づき「post_type= Breadcrumb NavXT」でググってきました。
当方phpは分かりませんが最後のスクリプトのコピペで無事に解決出来ました。
このページがなかったら絶対に解決出来ませんでした(汗)
この度は情報有り難う御座いますした!
コメントありがとうございます!^^*
コピペ用に最後にPHPプログラムの全文を書いておいて正解でしたね♪
お役に立てて幸いです( *´艸`)