Support » Allgemeine Fragen » In Datenbank Tabelle ohne AUTOLOAD=yes speichern

  • Gelöst radarin

    (@radarin)


    Guten Abend

    Ich bin derzeit daran für meine Fotogallery ein Plugion zu schreiben. Die Einstellungen dazu speichere ich in der tabelle _options. Funktioniert alles einwandfrei.

    Nun bin ich darauf gestossen, dass WP die Spalte ‚autoload‘ standardmässig auf ‚yes‘ setzt. Da die Gallery auf einer einzigen Seite mittels Shortcode eingebunden wird und es noch einige andere Seiten gibt, macht das natürlich keinen Sinn, diese Einstellungen auf jeder Seite zu laden.

    <?
    /* Step 1. */
    function meinefotogallery() {
    add_options_page( 'Gallery Options', 'Meine Gallery', 'manage_options', 'meine-gallery', 'gallery_options' );
    }
    
    /* Step 2 (from text above). */
    add_action( 'admin_menu', '}
    ?>' );
    
    /* Step 3. */
    function gallery_options() {
    
       /* Hier stehen die Inhalte der Funktion drin */
    
    }
    ?>

    Gespeichert wird in der Tabelle mit

    update_option( 'mygallery_titlesize', $_POST[ 'mygallery_titlesize' ] );

    Wie kann ich ‚autoload‘ auf ’no‘ stellen?

    Gruß René

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Hallo,
    das machst du normalerweise im Bereich der Einstellungen, indem du prüfst, ob die Einstellungen in der wp_options (Präfix kann bei dir anders sein) bereits vorhanden sind.
    Beispiel (ist leider nicht so schön formatiert wie in meinem Editor) aus einem Plugin von mir:

    				if (empty( $add_infos_to_tec_options)) {
    				    // The option hasn't been added yet. We'll add it with $autoload set to 'no'.
    				    $deprecated = null;
    				    $autoload = 'no';
    						$tec_path = ait_path_for_tec();
    						$add_infos_to_tec_options = array(
    								'fs_option_pfad' => $tec_path,
    								'fs_hintergrundfarbe_button' => '#77BCC7',
    								'fs_vordergrundfarbe_button' => '#ffffff',
    								'fs_hover_hintergrundfarbe_button' => '#F9B81E',
    								'fs_hover_vordergrundfarbe_button' => '#ffffff',
    								'fs_runder_button' => '5',
    								'fs_alle_buttons' => '0',
    								'fs_schriftart' => '1',
    								'fs_linie_oben' => '1',
    								'fs_linie_unten' => '0',
    								'fs_bezeichnung_externer_link' => 'Read More',
    								'fs_bezeichnung_events_link' => 'More Events',
    								'fs_bezeichnung_interner_link' => 'Read More on this website',
    								'fs_sortierung_categories' => '1'
    							);
    						add_option( 'add_infos_to_tec_settings', $add_infos_to_tec_options, $deprecated, $autoload);
    				}
    

    Übrigens: „Entwicklung von WordPress-Plugins“ von Onno Gabriel ist ein sehr schönes kompaktes Buch. Kann ich empfehlen.
    Umfangreicher ist das Buch „WordPress für Entwickler“ von David Remer. Auch zu empfehlen.
    Ansonsten findest du viele Infos auch im „Plugin Handbook
    Viele Grüße
    Hans-Gerd

    Thread-Starter radarin

    (@radarin)

    Danke Dir für deinen Input. Auf die Schnelle hat die Anpassung meines Codes noch nicht funktioniert (in die bestehende Funktion). Die Syntax um in der Optionen Tabelle speichern zu können ist eine ganz andere. Ich vermute dahinter eine spezielle Funktion nur für diese Tabelle. Dann muss ich es mit Deiner Vorlage nochmals probieren. Wenn der Fehler da liegt wo ich ihn mittlerweile vermute, dann wird es nachher wahrscheinlich klappen.
    Das empfohlene Buch von Onno Gabriel hab ich mal gekauft, werde mir das mal in den nächsten Tagen rein ziehen.

    Gruß René

    Thread-Starter radarin

    (@radarin)

    Die Funktion ist doch etwas heimtückisch. Funktionieren tut es grundsätzlich mit

    update_option( 'mygallery_titlesize', $_POST[ 'mygallery_titlesize' ], 'no' );`

    Wenn ich das so ergänze und im Formular auf ’speichern‘ klicke verändert sich in der Spalte ‚autoload‘ rein gar nix, obwohl da in der Funktion ganz eindeutig ein ’no‘ drin steht.

    Bei bestehenden Einträgen wird das ‚autoload‘ nur geändert, wenn gleichzeitig auch das ‚option_value‘ geändert wird. Darauf muss man erst mal kommen. Deshalb dachte ich die ganze Zeit, der Sch… funktioniert nicht. Wird mit dieser Funktion ein neuer Eintrag erstellt, bekommt er von Anfang an ein ’no‘.

    Das Buch macht übrigens einen guten Eindruck, vor Allem auch weil es auf deutsch ist.

    Danke und Gruß, René

    gerne 🙂

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Das Thema „In Datenbank Tabelle ohne AUTOLOAD=yes speichern“ ist für neue Antworten geschlossen.