web-dev-qa-db-ja.com

ページのコンテンツからヘッダーにショートコードを追加し、それをページのコンテンツから隠す

ページを作成し、wp-orbit-sliderから以下のショートコードを追加しました

 [orbit-slider category="test"] 

の内容が欲しい

 [orbit-slider category="test"] 

ワードプレスが通常行うコンテンツ領域部分ではなく、ヘッダー部分に表示されます。私はheader.phpに短いコードを追加してみましたが、それは動作しますが、同じコンテンツがコンテンツ領域にも複製されます。これを避ける必要があります。どうすればこれを達成できますか?

2
user7282

これは、the_contentフィルタに早くフックして、そこからショートコードタグを取り除くことを試みることで、あなたのために働くかもしれません:

add_filter('the_content', 'ad_filter_the_content',1,1);
function ad_filter_the_content($content) {
    // specify page id or array of page ids to include
    if (is_page(5)) {
        return str_replace('[orbit-slider category="test"]', '', $content);
    }
    return $content;
}
1
Ahmad M

ショートコードにはPHP呼び出しを使用できます。それはこのように動作します:

echo do_shortcode('[orbit-slider category="test"]');

しかし、私はあなたの質問から、あなたは各ページに異なるショートコードを持っているかもしれないと思います。その場合は、Orbit-Slider用のcategoryを含むページ用のカスタムフィールドを追加してみてください。

もちろん、分類システムのビルド(標準のカテゴリなど)を使用している場合は、カスタムフィールドを使用する必要はありませんが、カテゴリを使用するだけで済みます。私はCategoryversionに最初のCaategoryを使用します - 例外を自分自身でここで処理するようにしてください。

// for the custom field version
$orbitcategory = get_post_meta( get_the_ID(), 'my_orbit_slider', true );
// for the Taxonomy version
$orbitcategory = get_the_category( get_the_ID() );
$orbitcategory = $orbitcategory[0]->name;



$thisslider = '[orbit-slider category="' . $orbitcategory . '"]';

echo do_shortcode( $thisslider );

あなたはこのように大丈夫なはずです。

ショートコードをもう一度コンテンツに入れないでください。

1
fischi