web-dev-qa-db-fra.com

Ajouter des codes courts à partir du contenu d'une page sur l'en-tête et les masquer du contenu de la page

J'ai créé une page et ajouté le shortcode suivant de wp-orbit-slider

 [orbit-slider category="test"] 

Je veux le contenu de

 [orbit-slider category="test"] 

être affiché sur la partie en-tête, plutôt que sur la partie contenu, ce que fait habituellement wordpress. J'ai essayé d'ajouter le code court sur header.php et cela fonctionne, mais le même contenu sera dupliqué dans la zone de contenu également. J'ai besoin d'éviter cela. Comment cela peut il etre accompli ?

2
user7282

Cela pourrait fonctionner pour vous, en essayant d’accrocher tôt au filtre the_content pour enlever le tag shortcode:

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

Vous pouvez utiliser l'appel PHP pour un Shortcode. Cela fonctionne comme ceci:

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

Mais je pense, d'après votre question, que vous pouvez avoir différents codes courts pour chaque page. Si c'est le cas, essayez d'ajouter un champ personnalisé pour vos pages, contenant la variable category pour votre curseur orbite.

Bien sûr, si vous utilisez le système de taxonomie intégré (par exemple, les catégories standard), vous ne devez pas utiliser de champ personnalisé, vous pouvez simplement utiliser la catégorie. J'utilise la première catégorie pour la version catégorie - assurez-vous de gérer les exceptions vous-même ici.

// 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 );

Vous devriez aller bien comme ça.

Et rappelez-vous de ne pas mettre votre shortcode dans le contenu à nouveau :)

1
fischi