it-swarm.com.de

Hinzufügen von Inhalten zur Seite ohne Shortcodes

Die Site, an der ich arbeite, enthält einige Seiten, die mit verschiedenen Inhaltselementen wie Textbildkombinationen, Schiebereglern, Inhaltslisten usw. gefüllt werden müssen. Der Client muss diese Inhaltsblöcke neu anordnen, neue hinzufügen und so weiter. Jeder Inhaltsblock ist ein Inhaltselement (Beitrag oder benutzerdefinierter Beitragstyp) oder eine Inhaltsliste.

Soweit ich weiß, habe ich zwei Möglichkeiten:

  1. Verwenden Sie ein komplexes Plugin, um vordefinierten Inhalt zu ziehen und abzulegen
  2. Verwenden Sie Shortcodes

Aus entwicklungspolitischer Sicht würde ich die gesamte Logik lieber nicht einem Plugin eines Drittanbieters überlassen. Es scheint, als würde ich etwas von der Kontrolle über das Templating verlieren?

Aber Shortcodes scheinen für jeden Kunden keine akzeptable Lösung zu sein, da sie zu technisch sind.

Irgendwelche Vorschläge? Gibt es eine bewährte Methode?

5
sven

Ich habe die verschiedenen Optionen ausgewertet und bin mit einem Plugin "Page Builder" gegangen. Die technischen Aspekte sind zwar nicht besonders wichtig (z. B. Daten bleiben erhalten: Alle Inhalte werden serialisiert), aber es war die einzige Option, die mir genügend Flexibilität und Komfort bot, damit der Kunde Änderungen an der Struktur jeder Seite vornehmen konnte.

Die Migration von Dev zu Stage zu Live war auch aufgrund der Serialisierung mühsam und nur mit einem weiteren Plugin (Duplikator) möglich.

Vielen Dank an alle für den Input!

0
sven

Obwohl Shortcodes für sich genommen mit Funktionen verknüpft sind, können Sie sie meines Erachtens effektiv in Kombination mit Vorlagen und einer Metabox für ihre Eingabedaten verwenden. z.B:

add_shortcode('content-box','content_box_function');
function content_box_function() {
    global $post;
    $title = get_post_meta($post->ID,'_content_box_title',true);
    $content = get_post_meta($post->ID,'_content_box_content',true);
    get_template_part('templates/content','box');
}

/ wp-content/themes / theme-slug / templates/content-box.php

<div class="content-box-container">
    <div class="content-box">
         <h3 class="content-box-title"><?php echo $title; ?></h3>
         <div class="content-box-content"><?php echo $content; ?></div>
    </div>
</div>

Fügen Sie dann eine Metabox zum Post-Writing-Bildschirm hinzu, damit der Benutzer die Meta-Werte auswählen/definieren kann, die zu den Tasten passen, die Sie für jeden Inhaltsblock-Shortcode verwenden.

Sie haben den Vorteil, dass der Shortcode an einer beliebigen Stelle im Inhalt bestellt/platziert werden kann und nach Bedarf noch andere Inhalte vorhanden sind. Das Templating (und das zugehörige Styling) kann jedoch bereits für die vordefinierten Inhaltsblocktypen ausgearbeitet werden.

1
majick

Sie können die Seitenvorlagen verwenden. Für das Beispiel verwende ich eine Kontaktseite. "contact-page.php"

Sie können dann den Code eingeben, den Sie für die Vorlage benötigen. Um die Flexibilität beizubehalten, lesen Sie nach, wie Sie den Customizer verwenden (falls Sie nicht mit dem Customizer vertraut sind), und verwenden Sie ihn auf der Vorlagenseite, damit der Administrator den Seiteninhalt ändern kann, ohne sich den Code ansehen zu müssen. So habe ich meine Vorlagen gemacht.

1
Chess Byte

Dies ist eine interessante Frage, die jedoch für ein Q & A-Modell etwas zu weit gefasst ist. Folgendes würde ich tun:

  1. Erstellen Sie einen benutzerdefinierten Beitragstyp, bei dem jeder Beitrag ein Inhaltsblock ist
  2. Erstellen Sie einen zweiten benutzerdefinierten Beitragstyp für Seiten, die aus Codeblöcken zusammengesetzt sind. Erstellen Sie anstelle eines Inhaltsfelds zehn Dropdown-Felder (oder mehr, wenn auf einer Seite mehr Blöcke möglich sind). Übernehmen Sie für die Optionen select in der Dropdown-Liste den Titel aller Beiträge im ersten benutzerdefinierten Beitragstyp. Auf diese Weise wird jeder neue Inhaltsblock automatisch für die Assembly verfügbar.
  3. Erstellen Sie eine Vorlage für den zweiten Beitragstyp, die alle Dropdown-Felder durchläuft und den Inhalt der ersten benutzerdefinierten Beiträge zusammenstellt.
1
cjbj