サポート » 使い方全般 » 投稿画面でショートコードが使えないようにしたい

  • 解決済 meai

    (@meai)


    固定ページでショートコードをいくつか使っています。

    contact form 7などのショートコードは、
    投稿画面でも使える、ということがわかりました。

    そこで、ショートコードが固定ページだけ使えて、
    投稿画面では使えないようにしたいのですが、
    どうするのがよいのでしょうか?

    プラグインやなにかのコードなど、方法は問いません。

    お願いします。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • こんにちは

    remove_all_shortcodes();をコンディショナルタグと組み合わせて使ってみてはどうでしょう

    nobitaさん
    ご回答ありがとうございます。

    調べてみたのですが、
    remove_all_shortcodes();が全てのショートコードを抹消してしまう
    ということで、具体的な条件分岐というものが想像つかないのですが、
    どのようにするのがよいのでしょうか・・・

    http://codex.wordpress.org/Function_Reference/strip_shortcodes

    とか、試してはいませんが、

    返信が遅くなってしまってすいません。

    nobitaさんが教えてくださいましたリンクにあった、

    function remove_shortcode_from_index($content) {
      if ( is_home() ) {
        $content = strip_shortcodes( $content );
      }
      return $content;
    }
    add_filter('the_content', 'remove_shortcode_from_index');

    というコードをfunctions.phpに貼り付けて、
    投稿画面のビジュアルでcontact form 7のショートコードを利用してみましたが、
    投稿された記事で普通にお問い合わせフォームが表示されました。
    (投稿画面でもショートコードが機能してしまいました)

    remove_shortcode_from_indexやremove_all_shortcodes();などの
    使い方もわからず、困っています。

    どのようにするのが良いのか、もう少し助けていただけませんでしょうか

    モデレーター gatespace

    (@gatespace)

    is_home だからホーム画面だけ有効になってるだけじゃないですか?
    投稿の個別記事を表示している時なら、is_singleじゃないですか?
    もしくはアーカイブ系にも対応するなら 'post' == get_post_type()
    日本語Codex:条件分岐タグ

    一応、動作確認を行ってみました

    WordPress3.5.1
    twenty eleven.
    テストしたショートコードは、contact form 7 と gallery

    一応トップページと、シングル投稿でチェックしましたが、こちらの環境では、動作するようです。

    キャッシュプラグインや、ブラウザキャッシュを切ってから、もう一度やってみるといいと思います。

    出来ると思ってやると、意外と出来たりします。

    capture

    http://tenman.info/labo/snip/files/remove_shortcode_from_index.png

    test code

    function remove_shortcode_from_index($content) {
    		if ( is_home() or
    			is_single() ) {
    		$content = strip_shortcodes( $content );
    	  }
    	  return $content;
    	}
    
    	add_filter( 'the_content', 'remove_shortcode_from_index' );

    nobitaさん、gatespaceさん
    ご返信ありがとうございます。
    こちら側からの返答が遅くなってしまいまして、
    申し訳ありませんでした。

    nobitaさんのtestcodeで、投稿画面でショートコードは利用できないようになり、
    固定ページではショートコードが利用できる状況となりました。

    ありがとうございます。

    確認というか、気になった部分なのですが、
    if ( is_home() or is_single() )
    という部分でis_singleが効いていたために、
    投稿画面でショートコードが利用できないようになった、
    という認識で大丈夫でしょうか?

    確認というか、気になった部分なのですが、
    if ( is_home() or is_single() )
    という部分でis_singleが効いていたために、
    投稿画面でショートコードが利用できないようになった、
    という認識で大丈夫でしょうか?

    これは、条件分岐タグと呼ばれる WordPress関数です

    既出ですが、詳細は以下を参照してください。

    http://wpdocs.sourceforge.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0

    say: gatespace

    もしくはアーカイブ系にも対応するなら ‘post’ == get_post_type()

    などの、コメントにも留意して、どのような場面で、動作するのかを検証しがならカスタマイズを楽しんでください :)

    モデレーター gatespace

    (@gatespace)

    // ショートコードを無視する関数 $content は投稿の本文
    function remove_shortcode_from_index( $content ) {
    	if ( is_home() or is_single() ) { // いま表示しているのが、ホームまたは投稿の個別ページの場合
    		$content = strip_shortcodes( $content ); // 投稿の本文からショートコードを削除
    	}
    	return $content; // 結果を戻す
    }
    // the_contentが使われる(表示される時)に remove_shortcode_from_index という関数を実行してね
    add_filter( 'the_content', 'remove_shortcode_from_index' );

    nobitaさん、gatespaceさん
    何度も返信が遅くなってしまい、本当に申し訳ありませんでした。

    どちらの解説も分かりやすく勉強になりました。
    具体的な勉強報告などは難しいですが・・・

    今後も頑張りたいと思います。

    もし、わからないことがあったら
    またいろいろと教えていただけると嬉しいです

    今回は本当にありがとうございました!

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「投稿画面でショートコードが使えないようにしたい」には新たに返信することはできません。