Seitentemplate mit SQL-Befehl zuweisen

  • Hallo zusammen,

    ich möchte globale Änderungen vornehmen und ein Seitentemplate bestimmten Seiten zuweisen. Wie bekomme ich das mit einem SQL-Befehl hin?
    Vielen Dank für jeden guten Tipp!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ein Seitentemplate brauchst du nicht über einen SQL Befehl zuweisen, das geht übers WP Backend: https://developer.wordpress.org/themes/templat…-for-global-use

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Ein Seitentemplate brauchst du nicht über einen SQL Befehl zuweisen, das geht übers WP Backend: https://developer.wordpress.org/themes/templat…-for-global-use

    Klar. Das weiß ich natürlich. Deshalb schrieb ich ja von globalen Änderungen.

    Zur Verdeutlichung nochmal mein Vorhaben:
    Für zahlreiche Seiten wurde zur Weiterleitung auf die erste Unterseite ein Plugin benutzt. Das Plugin konnte durch ein Seitentemplate ersetzt werden, welches bei neuen Seiten verwendet wird. Es ist aber mühsam, die alten Seiten jeweils manuell durch Aufruf und Ändern der Attribute im Editor anzupassen. In der Tabelle wp_postmeta werden einige Daten zum Template bzw. Weiterleitung reingeschrieben. Mit einem SQL-Befehl konnte ich die Weiterleitung auf die erste Unterseite durch das Template einstellen. Das funktioniert einwandfrei. Als "Schönheitsfehler" wird aber unter Template das Standardtemplate angezeigt. Hier hätte ich gerne mein spezielles Template zur Weiterleitung sichtbar.
    Ich hoffe, es ist verständlich formuliert.

    Mein Seitentemplate zur Weiterleitung heißt: page_redirect_first_child.php
    Das bisherige Plugin fügte den Eintrag "_redirector" hinzu, womit ich die betreffenden Seiten erkennen kann.

    Mit diesem Befehl

    Code
    update wp_postmeta set meta_key = 'wp_page_template', meta_value = 'page_redirect_first_child.php'  WHERE meta_key = '_redirector'

    wurde das Seitentemplate zur Weiterleitung aktiviert. Wie o. g. steht leider unter Template das Standardtemplate drin.

    Noch eine Idee?

  • Ich denke bei meta_value muss nur der Name des Templates rein, nicht der Name der Datei. Kannst du ja mal testen.

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • In meinen Tabellen steht der Dateiname oder default. Steht der Templatename in der ersten Zeile der page_redirect_first_child.php?

    PHP
    <?php /* Template Name: Example Template */ ?>

    Auch muss es meiner Meinung nach _wp_page_template heißen und nicht wp_page_template.

    Einmal editiert, zuletzt von spickzettel (1. September 2015 um 15:37)

  • SirEctor:

    Zitat

    Ich denke bei meta_value muss nur der Name des Templates rein, nicht der Name der Datei. Kannst du ja mal testen.

    Funktioniert leider nicht. Wenn ich das Template manuell zuweise, steht in der Spalte "meta_value" der Wert "page_redirect_first_child.php" drin. Also muss dieser Wert auch in den SQL-Befehl rein.

    spickzettel:
    So beginnt die Template-Datei:
    <?php
    /*
    Template Name: Auf erste Unterseite weiterleiten
    ...

    Zitat

    Auch muss es meiner Meinung nach _wp_page_template heißen und nicht wp_page_template.

    Das ist richtig; habe es mittlerweile auch bemerkt.

    Mit dem geänderten Befehl

    Code
    [URL="http://localhost:8080/us_opt1/url.php?url=http%3ANANNANdev.mysql.comNANdocNANrefmanNAN5.5NANenNAN%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20undefined.html"]update[/URL] wp_postmeta [URL="http://localhost:8080/us_opt1/url.php?url=http%3ANANNANdev.mysql.comNANdocNANrefmanNAN5.5NANenNAN%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20undefined.html"]set[/URL] meta_key = '_wp_page_template', meta_value = 'page_redirect_first_child.php'  WHERE meta_key = '_redirector'


    geht es leider auch nicht.

    Auf dieser Seite kann das Template (am Ende der Seite) zum Testen heruntergeladen werden.

  • Bin ein Stück weiter gekommen. Es gibt in der DB ja mehrere Zeilen mit der gleichen post_id.
    In der hier im Text weiter unten eingefügten Tabelle entspricht die zweite Spalte der post_id. Der Seite mit post_id=4 (blau) wurde das neue Template im Editor zugewiesen.
    Für die Seite mit der post_id=6 (rot) steht die Zuweisung noch aus und soll mit einem SQL-Befehl erfolgen.

    [COLOR=#0000ff]20 4 _redirector a:1:{s:4:"type";s:11:"first-child";}[/COLOR]
    [COLOR=#ff0000]21 6 _redirector a:1:{s:4:"type";s:11:"first-child";}[/COLOR]
    1 2 _wp_page_template default
    [COLOR=#0000ff]4 4 _wp_page_template page_redirect_first_child.php[/COLOR]
    [COLOR=#ff0000]7 6 _wp_page_template default[/COLOR]
    10 8 _wp_page_template default
    13 10 _wp_page_template default

    Bedingung: [COLOR=#ff0000]6 _redirector
    [/COLOR]Nach dem SQL-Befehl soll die Zeile so aussehen (Auszug): [COLOR=#ff0000] 6 _wp_page_template [/COLOR][COLOR=#ff0000]page_redirect_first_child.php

    [/COLOR]Verbal beschrieben:
    In Zeilen mit dem meta_key "_redirector" merke die post_id.
    In Zeilen mit der GLEICHEN post_id UND meta_key=wp_page_template UND meta_value=default ersetze "default" durch " page_redirect_first_child.php".

    Besser kann ich das Problem nicht beschreiben. Hat jemand dazu einen Lösungsansatz? Es müssten vermutlich mehrere Where-Bedingungen gelten. Die bisherige SQL-Anweisung ist dafür nicht geeignet.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!