本ブログも「SEO対策に強い無料WordPressテーマ「Stinger」」を有り難く使わせて頂いてます。
@ENJILOG さんに感謝です。
さて、現在「STINGER3」を使わせてもらっているのですが、ループする箇所にショートコードがそのまま出ちゃいます。流石にいやだなぁ〜と思いちょっとだけカスタマイズしてみました。
※以下記載するファイル名は STINGER3 のテーマフォルダー下のファイル名になります。
functions.php に以下を追記する
//ショートコードを外す function akita_noshotcode($content){ $rtn = ""; preg_match("/\[.+?\]/",$content,$retArr); $rtn = str_replace($retArr[0],'',$content); return $rtn; }
関数名は他の関数となるべく当たらないような名前にする為に akita_ と入れてあります。
次に
sidebar.php
archive.php
home.php
single.php
のそれぞれのファイル内の(他にもあるかも・・・)
strip_tags($post-> post_content)
となっている箇所を
↓
strip_tags(akita_noshotcode($post-> post_content))
と書き換えます。
これでループしている箇所にある投稿の頭にショートコードが書いてあっても見せなくする事が出来ます。
めでたしめでたし。
できれば次回のバージョンアップ時にショートコードが見えないような対処をして頂けると嬉しいです。
追記
Stinger3 が正式に公開されたようですね。対応してるかなぁ〜(stinger3ver20130906 では対応なかったようです)
コメント
Stinger3テーマの抜粋記事のショートコード表示を非表示にする対策
WordPressのテーマ「Stinger3」にて、トップのページやサイドバーに表示されている抜粋記事に、ショートコードがそのまま表示されるので嫌だなぁと思ってました。
これを解決する下…
夜分遅くに突然の書き込み申し訳ありません。
WordPressのBlog一覧にて囲み式のショートコードを表示出来ない様にしたいのですがどの様にしたら消せるか困っております。
もしよろしければご回答頂けませんでしょうか?
Blog一覧にはコンテンツの一部を表示させる様にしているのですが下記のキャプションのショートコードが消えません。
[caption id="attachment_2000" align="alignleft" width="189"]画像のキャプション文字[/caption]
なのでまずこちらの記事を参考にしながらBlog一覧表示のloop.phpにてコンテンツ出力のコードを以下の様に記述しました。
post_content, ‘UTF-8’)>200){
$content= mb_substr(strip_tags(akita_noshotcode($post->post_content, ”)), 0, 200, ‘UTF-8’);
echo $content.”;
}else{
echo strip_tags(the_content(), ”);
}
?>
続いてfunctions.phpにショートコードを非表示にする為に以下を記述しました。
//ショートコードを外す
function akita_noshotcode($content){
$rtn = “”;
preg_match(“/\[.+?\]/”,$content,$retArr);
$rtn = str_replace($retArr[0],”,$content);
return $rtn;
}
すると[caption]までのショートコードは消えるのですが以下の
画像のキャプション文字[/caption]までが消えないで表示されたままです。
囲み式のショートコードを消すにはどの様にfunctions.phpに記述すれば宜しいでしょうか?
例えばpreg_match(“/\[.+?\]/”の部分を書き換えてショートコードの終了タグを消すことは出来ますでしょうか?
お忙しいと思いますが、もしよろしければご回答宜しくお願い致します。
luvjapan さん、すでに解決してるかもしれませんが、 お察しの通り「preg_match(“/\[.+?\]/”」ここの正規表現で解決出来ると思います。
今、別件で手を離せないので確認してはいませんが、「preg_match(“/\[\/.+?\]/”」これで行けるかなと・・・「\/」を追記しています。
試してみてください。
おはようございます。
お忙しい中、ご回答ありがとうございます。
akitaさんのご教授の通り追記しましたら成功致しました。
以下のコードを追記しました。
preg_match( “/\[.+?\]“,“/\[\/.+?\]/“
本当に助かりました。
これからもブログ読ませていただきます。
ありがとうございました。
度々すみません。
先ほどのコードはショートコードも消えますが本文も一緒に消えてしまいますので自分の思った表示はできませんでした。なので
$content = strip_shortcodes( $content );にて対応致しました。
アドバイスありがとうございました。
うまくいったようでよかったです。
これからもよろしくお願いします。