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.
Schreibe einen Kommentar