Ankerlink an den Anfang der Seite
gardening 1493896 1920
Generic filters
Filter by Kategorien

Der Beitrag, geschriebem am 5. Juni 2016, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein

Gerne habe ich früher nach Lösungen für WordPress-Fragen gegoogelt. Allerdings kam ich irgendwann drauf, dass die Antworten auf meine Fragen über WordPress selbst manchmal schneller zu klären sind. Ein Beispiel habe ich heute beim Ausmisten meiner Backup-Archive wieder ausgegraben.

Zumindest den Output der WordPress-Settings-API über die Standardtemplates von WordPress finde ich nicht mehr ganz zeitgemäß. Man bekommt für jedes Feld das man registriert, eine Tabellenzeile (oben drüber ist dann natürlich eine Tabelle). Statt die Funktion do_settings_sections in wp-admin/includes/template.php zu verwenden, diese einfach durch eine eigene Funktion ersetzen.

Ein beliebig adaptierbares Beispiel

function flxo_settings_sections( $page ) {
    global $wp_settings_sections, $wp_settings_fields;

    if ( ! isset( $wp_settings_sections[$page] ) )
        return;

    foreach ( (array) $wp_settings_sections[$page] as $section ) {
        if ( $section['title'] )
            echo "<h2>{$section['title']}</h2>\n";

        if ( $section['callback'] )
            call_user_func( $section['callback'], $section );

        if ( ! isset( $wp_settings_fields ) || !isset( $wp_settings_fields[$page] ) || !isset( $wp_settings_fields[$page][$section['id']] ) )
            continue;
      //  $this->flxo_settings_fields( $page, $section['id'] ); in einer klasse
        pptf_settings_fields( $page, $section['id'] );
    }
}

Über add_settings_field(); können auch neue Argumente eingebracht und im Template dann verwendet werden.

function flxo_settings_fields($page, $section) {
    global $wp_settings_fields;

    if ( ! isset( $wp_settings_fields[$page][$section] ) )
        return;

    foreach ( (array) $wp_settings_fields[$page][$section] as $field ) {
        $class = '';

        if ( ! empty( $field['args']['class'] ) ) {
            $class = ' class="setting ' . esc_attr( $field['args']['class'] ) . '"';
        }
   
        echo "<div{$class}>";

        if ( ! empty( $field['args']['label_for'] ) ) {
            echo '<label for="' . esc_attr( $field['args']['label_for'] ) . '">' . $field['title'] . '</label><br />';
        } else {
            echo $field['title'];
        }

        call_user_func($field['callback'], $field['args']);
        echo '</div>';
    }
}

statt do_settings_sections wird die eigene Funktion flxo_settings_section verwendet. Sie ruft dann flxo_settings_fields als Ersatzfunktion für do_settings_fields auf.

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.

Ihre Nachricht wird möglicherweise zur Spam-Prüfung an OpenAI (USA) weitergeleitet. Weitere Informationen finden Sie in unserer Datenschutzerklärung.