web-dev-qa-db-fra.com

Comment appeler la fonction shortcode directement et passer $ atts

J'utilise le Catégories de la médiathèque plugin. Il n’ya pas beaucoup de documentation, j’ai donc conclu que la façon de le mettre en œuvre consisterait à utiliser le shortcode [mediacategories categories="6"].

Je veux implémenter cela directement dans le modèle de thème. Alors j'ai essayé:

<?php if(function_exists(do_shortcode('[mediacategories categories="6"]'))) { ?>
  <h1>Inspiration</h1>
<?php
  do_shortcode('[mediacategories categories="6"]');
}

J'ai également essayé d'implémenter la fonction directement, mais je ne pouvais pas transmettre correctement les $ atts pour que la fonction les utilise.

3
Evan Yeung

do_shortcode() analyse simplement la chaîne. Vous devez utiliser echo ou print pour l’imprimer.

function_exists() attend une chaîne correspondant à un nom de fonction. Après avoir regardé le plugin, je voudrais essayer ce code:

<?php
if ( function_exists( 'mediacategories_func' ) )
{
?>
<h1>Inspiration</h1>
<?php
    print mediacategories_func( array( 'categories' => 6 ) );
}
4
fuxia

J'ajoute généralement une section comme celle-ci à mes rappels de shortcode:

if (is_array($atts)) {
    extract(shortcode_atts(array(
            'primary_att' => 'primary_default',
            ...
        ), $atts));
} else {
    $primary_att = $atts;
}

Cela vous permet de passer un attribut 'primaire' (remplacez primary_att par le nom de votre attribut primaire) directement dans la fonction, sans l'envelopper dans un tableau ... dans votre cas, il pourrait s'agir de 'catégories' et vous pourriez l'appeler comme mediacategories_func(6); alors.

0
wyrfel