it-swarm.com.de

Settings API - Ausgabe von add_settings_field () ändern?

Ich verwende Settings API und frage mich, ob es eine Möglichkeit gibt, die Standardausgabe von add_settings_field () function zu bearbeiten.

add_settings_field('the_field', 'bar', 'foo', 'page', 'section');      

function foo() {
    echo 'foo';
}

Ausgänge:

<table class="form-table">
  <tr valign="top">
    <th scope="row">bar</th>
    <td>foo</td>
    </tr>

Wie entferne ich diese Tabellen-Tags und ersetze sie durch etwas anderes?

5
Wordpressor

Wenn Sie sich do_settings_fields() (Zeile 1125, /wp-admin/includes/template.php) ansehen, können Sie feststellen, dass die Tabelleninformationen in der Einstellungs-API fest codiert sind. Wenn Sie die Tabelle nicht verwenden möchten, müssen Sie Ihre eigenen Einstellungsfunktionen entwickeln.

5
mor7ifer

Meine benutzerdefinierte Funktion dafür:

/**
 * Prints out one specified field from settings section.
 *
 * Based on:
 * @see do_settings_sections
 * 
 * @global array $wp_settings_sections  Storage array of all settings sections added to admin pages
 * @global array $wp_settings_fields    Storage array of settings fields and info about their pages/sections
 *
 * @param string $page                  The slug name of the page whose settings sections you want to output
 * @param string $field_id              Field ID for output
 */
public static function do_settings_section_field($page, $field_id) {
    global $wp_settings_sections, $wp_settings_fields;

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

    foreach ( (array) $wp_settings_sections[$page] as $section ) {

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

        if ( ! isset( $wp_settings_fields[$page][$section['id']] ) )
            continue;

        foreach ( (array) $wp_settings_fields[$page][$section['id']] as $field ) {
            if ( $field['id'] !== $field_id )
                continue;

            call_user_func($field['callback'], $field['args']);
        }
    }
}

Sie können diese Funktion anstelle von do_settings_sections() mit denselben ersten Argumenten und derselben Feld-ID für das Rendern als zweites Argument verwenden.

0
NewEXE