web-dev-qa-db-fra.com

Widgets individuels par page

Dans mon site Wordpress (page uniquement, pas de messages), j'ai un certain nombre de blobs statiques qui doivent être placés dans une barre latérale. Nous pourrions appeler/traiter ces 'blobs' comme des widgets. Au moins, ils auront un contenu HTML fixe, comme "teaser1", "teaser2", "disclaimer", "foo policy" ...

Ce dont j'ai besoin, c'est de les disposer différemment pour chaque page. Il ne s’agit donc pas uniquement de fichiers "uniques" ou "d'archives", mais bien de "page produit A" et de "page produit B" par rapport à "à propos de nous" par rapport aux "conditions d'utilisation".

Je pensais aux méta-boîtes personnalisées pour les activer et les désactiver sur la page de l'éditeur individuelle wp-admin/post.php?post=196&action=edit, mais le confort de glisser-déposer et la détermination facile des commandes des widgets classiques seraient encore plus agréables.

Aussi, je ne suis pas sûr de savoir comment maintenir (ajouter, supprimer, modifier (la vue en texte HTML fera l'affaire) ces extraits de code statiques ...

Il serait plus intuitif pour mes utilisateurs de l'avoir sur la page d'édition individuelle (wp-admin/post.php?post=123&action=edit) pour cocher "Je veux le widget 1,2,5,8" plutôt que d'aller au widget/extrait respectif, en lui disant "Vous devez apparaître sur les pages suivantes "que je comprends est la manière Afficher les widgets fonctionne ...

Donc, idéalement, j'aurais une page de préférences Widgets (ou Modules ou Extraits de code), dans laquelle je peux ajouter/modifier/supprimer des widgets. Et puis sur la page d'édition individuelle, une metabox à droite pour les ajouter et les faire glisser dans l'ordre.

7
Frank Nocke

Vous pouvez le faire en utilisant Contexte du widget plugin ou Widget Logic plugin.

Ils fonctionnent bien. Je préfère le contexte de widget parce qu'il a plus de flexibilité.

4
Lucas García

Qu'en est-il d'utiliser quelque chose de simple, comme un plugin.

J'utilise Widgets Controller et c'est un bon.

Un plugin qui vous permet de contrôler l'affichage ou le masquage des widgets sur les catégories, les publications et les pages WordPress.

3
kat_indo

Ce plugin http://wordpress.org/extend/plugins/wp-page-widget/ est très bon et voici quelques captures d'écran et plus d'informations à ce sujet http://codeandmore.com/products/ wordpress-plugins/wp-page-widget/ . Utilisé sur plusieurs sites et jamais eu de problème.

La meilleure chose à ce sujet est que vous pouvez réellement gérer les widgets pour chaque page spécifique sur l'écran d'édition de la page sans avoir à accéder à la zone des widgets.

2
Amit

Je l'ai fait pour un modèle spécifique sur un site. Toute page comportant ce modèle possède sa propre zone de widgets, autorisant un ou plusieurs widgets spécifiquement pour cette page. Il existe plusieurs plug-ins qui vous donnent une logique de widget dynamique, mais cette approche est plus ciblée et pourrait convenir à votre problème (il l'a été pour moi sur ce site Web spécifique).

Pour l'administrateur, les zones de widgets doivent toutes être enregistrées pour que vous puissiez affecter et configurer des widgets pour ces pages:

// dynamically add some widget zones for pages using some templates
add_action('sidebar_admin_setup', 'wpse_76601_actionSidebarAdminSetup');

/**
* handle action sidebar_admin_setup to check for dynamically created sidebars
* and make sure they're registered
*/
function wpse_76601_actionSidebarAdminSetup() {
    global $post;
    global $wp_registered_sidebars;

    // find all pages that use template with dynamic widget zone
    $query = new WP_Query(array(
        'meta_key' => '_wp_page_template',
        'meta_value' => 'wpse-template-dept.php',
        'post_type' => 'page',
        'nopaging' => true,
        'orderby' => 'title',
        'order' => 'ASC',
    ));

    while ($query->have_posts()) {
        $query->the_post();

        $id = "wpse-{$post->ID}-aside";

        // register any that aren't already registered
        if (!isset($wp_registered_sidebars[$id])) {
            register_sidebar( array(
                'name' => $post->post_title . ' Asides',
                'id' => $id,
                'description' => 'Aside widgets for page ' . $post->post_title,
                'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
                'after_widget' => '</li>',
                'before_title' => '<h3 class="widget-title">',
                'after_title' => '</h3>',
            ) );
        }
    }
    wp_reset_postdata();
}

Ensuite, dans le modèle de page, la zone de widget doit être réenregistrée avant d'être appelée. il suffit d’ajouter en haut du modèle avant l’appel à wp_head() et il s’enregistrera uniquement pour cette page spécifique.

function template_widgetsInit() {
    global $post;

    register_sidebar( array(
        'name' => $post->post_title . ' Asides',
        'id' => "wpse-{$post->ID}-aside",
        'description' => "Aside widgets for page {$post->post_title}",
        'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
        'after_widget' => '</li>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );
}
template_widgetsInit();
1
webaware

Chaque page ne pourrait-elle pas avoir un modèle de page différent et chacun de ces modèles de page aurait un menu différent? Je suppose qu'il y a une limite au nombre de menus que vous pouvez créer, serait la plus grande limitation.

0
Don Zacharias

Parlez-vous de les réorganiser ou simplement de choisir ceux qui sont affichés page par page? Vous pouvez certainement ajouter une taxonomie et laisser chaque widget écouter la présence de ce terme (dans sidebar.php, par exemple).

Par exemple, la taxonomie enregistrée peut être appelée "Présence de widget" et comporte des termes tels que widget 1, widget 3, texte sur nous, barre Foo.

Une page sélectionnera les termes utilisés.

Dans l'encadré latéral, vous avez des instructions conditionnelles qui vérifient les termes d'une page donnée et chargent des parties de modèle, des widgets ou des blocs de code en corrélation. Avoir un sens?

Je pourrais préparer un exemple plus spécifique si vous souhaitez fournir plus de détails.

0
GhostToast

J'ai construit un site Web avec ces mêmes besoins. En fait, je viens d'utiliser le plugin "Widget Logic"

http://wordpress.org/extend/plugins/widget-logic/

Il crée un champ de texte sur chaque widget qui prend des balises conditionnelles Wordpress. Si j'avais besoin de les réorganiser, j'ai créé plus d'un des widgets nécessaires dans des emplacements distincts. C'était une solution rapide et facile.

Leon

0