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

Switch language

当Webサイトのコンテンツ内にはアフィリエイト広告、Googleアドセンス広告が含まれます。
広告主によって不適切な広告が表示されていることに気付いた方は、お手数でございますが該当の広告の「×」を押していただき、「この広告の表示を停止」し所定の流れに従ってください。

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の移行手順
【コピペ可】非プラグイン依存!カスタムフィールド出力の統一した書き方
私が知っているメジャーなカスタムフィールド系プラグインは以下の3つです。 Advanced Custom FieldsSmart Custo
ウィジェットエリアを追加して表示する方法【WordPress】
こんにちは。 今回はワードプレスでウィジェットエリアを追加し、追加したウィジェットを表示する方法について紹介したいと思います。 それでは、い
WordPressで開発環境を構築する方法
今回はWeb制作の現場では、どのようにWordPressの開発環境を構築しているのかをお伝えしようと思います。 すでに公開しているWordP
Smart Custom Fields愛用者が常用する全カスタムフィールド出力方法
私の仕事柄、WordPressでサイトを1からカスタマイズして作ったりリニューアルのメンテナンスやカスタマイズ仕直しの業務が多々あり、毎回非
Custom Field Suite と Duplicate Post を併用すると起きるバグの解決方法
Custom Field Suite(CFS)と Duplicate Post(DP)を併用すると、記事を複製したときに、記事編集画面では何



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

  1. おさむ より:

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

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

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

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

    • techstock@admin より:

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

コメントを残す

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