web-dev-qa-db-fra.com

Comment fonctionne la barre latérale de WordPress

Ok, le titre n’est sûrement pas bon pour expliquer ma question très fondamentale, mais la voici:

Je viens de commencer à créer un thème wordpress et l'index.php a deux colonnes:

1.) Le contenu principal et

2.) Une colonne verticale où je montre d'autres infos comme Archives, Messages récents, tous par programmation.

Mis à jour

Jusqu'à présent, tout allait bien alors j'ai entendu parler de l'enregistrement d'une barre latérale affichant un contenu autre que le contenu principal (qui me semble me semble très similaire au mien). Cette barre latérale est-elle une fonctionnalité fournie par wordpress elle-même ou doit-elle faire quelque chose avec la barre latérale de mon thème (qui a été créée par moi)? Est-ce qu’une barre latérale est nécessaire pour s’inscrire à un thème? Dois-je faire quelque chose pour enregistrer ma barre latérale et si oui quoi exactement?

En outre, que signifie exactement (je veux dire ce qui se passe dans les coulisses en termes de requêtes DB ou autres requêtes SQL) pour enregistrer une barre latérale dans un thème?

1
me_digvijay

J'ai entendu parler de l'enregistrement d'une barre latérale affichant un contenu autre que le contenu principal (ce qui me semble très similaire au mien). Cette barre latérale est-elle une fonctionnalité fournie par wordpress elle-même ou doit-elle faire quelque chose avec la barre latérale de mon thème (créée par moi)?

Rien à ce sujet n’est fourni par Core, à l’exception des mécanismes de base de la barre latérale. La barre latérale et tous les widgets nécessaires doivent être créés par vous ou installés par vous.

Est-ce qu’une barre latérale est nécessaire pour s’inscrire à un thème?

Oui bien sûr. Sinon, WordPress et le thème n’auraient aucune idée de leur existence. Techniquement, un plugin (par exemple) pourrait enregistrer la barre latérale, mais le thème devrait être codé pour pouvoir être utilisé.

Dois-je faire quelque chose pour enregistrer ma barre latérale et si oui quoi exactement?

En outre, que signifie exactement (je veux dire ce qui se passe dans les coulisses en termes de requêtes DB ou autres requêtes SQL) pour enregistrer une barre latérale dans un thème?

Il existe un exemple de code dans le Codex .

1
s_ha_dum

Les deux fonctions à votre disposition sont register_sidebar et dynamic_sidebar; malgré leur nom, elles n’ont rien à voir avec une "barre latérale" au sens traditionnel du terme.

Quant au terme "widget", ce n’est rien de plus qu’un bloc de code qui prend des paramètres et génère du contenu. Un utilisateur peut affecter des widgets à une zone "barre latérale" enregistrée dans le backend sous Apparence> Widgets.

Par exemple, vous pouvez avoir une zone "en-tête" et "pied de page" que votre utilisateur peut modifier. Enregistrez les deux zones comme suit:

register_sidebar(
    array(
        'name' => 'Header',
        'id'   => 'header',
    )
);

register_sidebar(
    array(
        'name' => 'Footer',
        'id'   => 'footer',
    )
);

Et puis pour afficher tous les widgets assignés à "en-tête":

<?php dynamic_sidebar( 'header' ) ?>

Vous pouvez aller encore plus loin en vous inscrivant dans les zones "conditionnelles". Par exemple, les widgets uniquement pour la page d'accueil dans la barre latérale:

register_sidebar(
    array(
        'name'        => 'Sidebar Front Page',
        'description' => 'Widgets that only show in the sidebar on the front page.',
        'id'          => 'sidebar-front-page',
    )
);

Et puis placez la condition autour de votre fonction d'affichage:

<div class="sidebar">

    Some content that's always here

    <?php if ( is_front_page() ) : ?>

        <?php dynamic_sidebar( 'sidebar-front-page' ) ?>

    <?php endif ?>

</div>
1
TheDeadMedic

Voici comment fonctionne la barre latérale dans Twenty Twelve

Il y a 2 parties:

Enregistrez la barre latérale dans votre fichier de fonctions en utilisant register_sidebar

function your_widgets_init() {
    register_sidebar( array(
    'name' => __( 'Main Sidebar', 'twentytwelve' ),
    'id' => 'sidebar-1',
    'before_widget' => '<aside id="%1$s" class="widget %2$s">',
    'after_widget' => '</aside>',
) );
}
add_action( 'widgets_init', 'your_widgets_init' );

Puis affichez-le où vous voulez en utilisant dynamic_sidebar . Dans ce cas, il est ajouté au fichier sidebar.php et inclus dans différents modèles à l'aide de get_sidebar(); , mais vous pouvez également appeler la barre latérale directement dans tout fichier de modèle à l'aide de la touche code suivant.

<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
<div id="secondary" class="widget-area" role="complementary">
<?php dynamic_sidebar( 'sidebar-1' ); ?>
</div><!-- #secondary -->
<?php endif; ?>

Une autre option consiste à accrocher la barre latérale à partir du fichier de fonctions à l'aide d'un crochet spécifique à WordPress ou à un thème, comme ceci:

add_action( 'loop_start', 'custom_sidebar' );
function custom_sidebar() {

    if ( ! is_front_page() )
        return;

    dynamic_sidebar( 'sidebar-1', array(
        'before' => '<div id="secondary" class="widget-area" role="complementary">',
        'after'  => '</div>',
    ) );

}

Et pour enregistrer la barre latérale, vous pouvez également utiliser cette méthode dans votre fichier de fonctions:

 register_sidebar( array(
    'name' => __( 'Main Sidebar', 'twentytwelve' ),
    'id' => 'sidebar-1',
) );

Lors de la création de plusieurs barres latérales, vous devez utiliser des ID uniques.

1
Brad Dalton