it-swarm.com.de

Einzelne Widgets pro Seite

In meiner Wordpress-Site (nur Seiten, keine Beiträge) muss ich eine Reihe von statischen Blobs in eine Seitenleiste einfügen. Wir könnten diese "Blobs" als Widgets bezeichnen. Zumindest haben sie einen festen HTML-Inhalt wie 'teaser1', 'teaser2', 'disclaimer', 'foo policy' ...

Was ich brauche, ist, sie für jede Seite anders anzuordnen. Hier geht es also nicht nur um "einzelne" vs. "Archive", sondern wirklich um "Produktseite A" vs. "Produktseite B" vs. "über uns" vs. "Nutzungsbedingungen" ...

Ich habe über benutzerdefinierte Meta-Boxen nachgedacht, um sie auf der Seite des einzelnen Editors wp-admin/post.php?post=196&action=edit ein- und auszuschalten, aber natürlich wäre der Drag-and-Drop-Komfort und die einfache Bestimmung der Reihenfolge von regulären Widgets noch besser.

Ich bin mir auch nicht sicher, wie ich diese statischen Snippets pflegen (hinzufügen, entfernen, bearbeiten (HTML-Text-Ansicht) soll ...

Es wäre für meine Benutzer intuitiver, wenn sie auf der Seite für die individuelle Bearbeitung (wp-admin/post.php?post=123&action=edit) das Kontrollkästchen "Ich möchte Widget 1,2,5,8" aktivieren, anstatt zum entsprechenden Widget/Snippet zu wechseln und ihm mitzuteilen, dass "Sie erscheinen müssen" auf den folgenden seiten "was ich verstehe ist der weg widgets anzeigen funktioniert ...

Idealerweise hätte ich eine Einstellungsseite für Widgets (oder Module oder Snippets), auf der ich Widgets hinzufügen/bearbeiten/löschen kann. Und dann auf der einzelnen Bearbeitungsseite eine Metabox auf der rechten Seite, um sie hinzuzufügen und in die richtige Reihenfolge zu ziehen.

7
Frank Nocke

Sie können dies mit Widget Context plugin oder Widget Logic plugin tun.

Sie funktionieren gut. Ich bevorzuge den Widget-Kontext, weil er flexibler ist.

4
Lucas García

Was ist mit etwas Einfachem wie einem Plugin?.

Ich verwende Widgets Controller und es ist eine gute.

Ein Plugin, mit dem Sie steuern können, ob Widgets in WordPress-Kategorien, -Posts und -Seiten angezeigt oder ausgeblendet werden.

3
kat_indo

Dieses Plugin http://wordpress.org/extend/plugins/wp-page-widget/ ist sehr gut und hier sind einige Screenshots und weitere Informationen dazu http://codeandmore.com/products/ WordPress-Plugins/WP-Seite-Widget/ . Ich habe es auf einigen Websites verwendet und hatte nie ein Problem.

Das Beste daran ist, dass Sie die Widgets für jede bestimmte Seite auf dem Bearbeitungsbildschirm der Seite verwalten können, ohne in den Bereich für Widgets wechseln zu müssen.

2
Amit

Ich habe dies für eine bestimmte Vorlage auf einer Website durchgeführt. Jede Seite mit dieser Vorlage hat eine eigene Widget-Zone, die ein oder mehrere Widgets speziell für diese Seite zulässt. Es gibt verschiedene Plugins, die Ihnen eine dynamische Widget-Logik bieten. Dieser Ansatz ist jedoch zielgerichteter und könnte zu Ihrem Problem passen (er hat auf dieser speziellen Website meinen).

Für den Administrator müssen alle Widgetzonen registriert sein, damit Sie Widgets für diese Seiten zuweisen und konfigurieren können:

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

Dann muss in der Seitenvorlage die Widget-Zone erneut registriert werden, bevor sie aufgerufen wird. Fügen Sie einfach vor dem Aufruf von wp_head() oben in die Vorlage ein, und es wird nur für diese bestimmte Seite registriert.

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

Konnte nicht jede Seite eine andere Seitenvorlage haben und jede dieser Seitenvorlagen ein anderes Menü? Ich gehe davon aus, dass die Anzahl der Menüs, die Sie erstellen können, begrenzt ist. Dies wäre die größte Einschränkung.

0
Don Zacharias

Wollen Sie sie neu anordnen oder einfach umschalten, welche pro Seite angezeigt werden? Sie könnten sicherlich eine Taxonomie hinzufügen und jedes Widget auf das Vorhandensein dieses Begriffs überprüfen lassen (z. B. in sidebar.php).

Beispielsweise könnte die registrierte Taxonomie "Widget-Präsenz" heißen und Begriffe wie Widget 1, Widget 3, Über uns Text, Foo-Leiste enthalten.

Eine Seite wählt aus, welche Begriffe sie hat.

In der Seitenleiste würden Sie einige bedingte Anweisungen haben, die prüfen, welche Begriffe eine bestimmte Seite hat, und Vorlagenteile oder bestimmte Widgets oder Codeblöcke laden, die korrelieren. Sinn ergeben?

Ich könnte ein spezifischeres Beispiel erstellen, wenn Sie weitere Einzelheiten angeben möchten.

0
GhostToast

Ich habe eine Website mit den gleichen Anforderungen erstellt. Ich benutze eigentlich nur das Plugin "Widget Logic"

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

Es erstellt ein Textfeld für jedes Widget, das bedingte Wordpress-Tags akzeptiert. Wenn ich sie neu anordnen musste, habe ich mehr als ein Widget erstellt, das an verschiedenen Orten benötigt wurde. Es war eine schnelle und einfache Lösung.

Leon