it-swarm.com.de

Fügen Sie der Seite mit den allgemeinen Einstellungen mehrere benutzerdefinierte Felder hinzu

Ich würde gerne ein paar benutzerdefinierte Felder zu den allgemeinen Einstellungen hinzufügen. Dies ist der Code, den ich verwende. Es funktioniert in Ordnung, aber ich kann nicht herausfinden, wie ich weitere Felder hinzufügen kann.

Ich möchte vorerst zwei Felder erstellen, eines für die Telefonnummer und das zweite für die Adresse:

function register_fields()
{
    register_setting('general', 'my_first_field', 'esc_attr');
    add_settings_field('my_first_field', '<label for="my_first_field">'.__('My Field' , 'my_first_field' ).'</label>' , 'print_custom_field', 'general');
}

function print_custom_field()
{
    $value = get_option( 'my_first_field', '' );
    echo '<input type="text" id="my_first_field" name="my_first_field" value="' . $value . '" />';
}

add_filter('admin_init', 'register_fields');

Ich habe es nur geschafft, es für mehrere Felder zum Laufen zu bringen, indem ich alles dupliziert habe.

Dann würde es so aussehen:

function register_fields()
{
    register_setting('general', 'my_first_field', 'esc_attr');
    add_settings_field('my_first_field', '<label for="my_first_field">'.__('My Field' , 'my_first_field' ).'</label>' , 'print_first_field', 'general');

    register_setting('general', 'my_second_field', 'esc_attr');
    add_settings_field('my_second_field', '<label for="my_second_field">'.__('My Field' , 'my_second_field' ).'</label>' , 'print_second_field', 'general');
}

function print_first_field()
{
    $value = get_option( 'my_first_field', '' );
    echo '<input type="text" id="my_first_field" name="my_first_field" value="' . $value . '" />';
}

function print_second_field()
{
    $value = get_option( 'my_second_field', '' );
    echo '<input type="text" id="my_second_field" name="my_second_field" value="' . $value . '" />';
}

add_filter('admin_init', 'register_fields');

Aber dies ist wahrscheinlich nicht der beste Weg, ich habe versucht, einen settings_section zu erstellen, aber es hat einfach nicht funktioniert oder nicht gespeichert usw. Es ist einfach sehr verwirrend.

21

Nun, das zweite Stück Code ist technisch die richtige Methode, um dies zu tun. Am Ende der add_settings_field() können Sie jedoch Argumente übergeben.

Bitte schauen Sie sich die WordPress Add_Settings_Field Funktionsreferenz an. Auf diese Weise können Sie besser verstehen, wie die Funktion add_settings_field() wirklich funktioniert.

Wenn dies gesagt ist, können Sie eine'shared'-Funktion für Ihren Rückruf verwenden. So wie ich es auf meiner Optionsseite mache, wenn ich Themen entwickle.

Hier ist ein Beispiel, wie ich es mache.

// My Example Fields
add_settings_field(  
    'tutorial_display_count',                      
    'Tutorial Display Count',               
    'ch_essentials_textbox_callback',   
    'ch_essentials_front_page_option',                     
    'ch_essentials_front_page',
    array(
        'tutorial_display_count' // $args for callback
    ) 
);
add_settings_field(  
    'blog_display_count',                      
    'Blog Display Count',               
    'ch_essentials_textbox_callback',   
    'ch_essentials_front_page_option',                     
    'ch_essentials_front_page',
    array(
        'blog_display_count'  // $args for callback
    ) 
);

// My Shared Callback
function ch_essentials_textbox_callback($args) { 

$options = get_option('ch_essentials_front_page_option'); 

echo '<input type="text" id="'  . $args[0] . '" name="ch_essentials_front_page_option['  . $args[0] . ']" value="' . $options[''  . $args[0] . ''] . '"></input>';

}

Das Anpassen an Ihre Bedürfnisse wird ein wenig dauern, aber eine gemeinsame Funktion für Ihre Rückrufe spart viel Code. Ansonsten machen Sie es so, wie es ist.

--Bearbeiten--

Ok, so sollte es für dich sein ... ändere einfach den Code nach Bedarf, ich habe dies im laufenden Betrieb geschrieben ... Ich habe es getestet, um es zu überprüfen, und es hat funktioniert. Sie müssen nur die add_settings_field (s) an Ihre Bedürfnisse anpassen. Wenn Sie weitere hinzufügen müssen, kopieren Sie diese, fügen Sie sie ein und bearbeiten Sie sie. Stellen Sie sicher, dass Sie register_setting wählen, da dies sonst nicht funktioniert.

add_action('admin_init', 'my_general_section');  
function my_general_section() {  
    add_settings_section(  
        'my_settings_section', // Section ID 
        'My Options Title', // Section Title
        'my_section_options_callback', // Callback
        'general' // What Page?  This makes the section show up on the General Settings Page
    );

    add_settings_field( // Option 1
        'option_1', // Option ID
        'Option 1', // Label
        'my_textbox_callback', // !important - This is where the args go!
        'general', // Page it will be displayed (General Settings)
        'my_settings_section', // Name of our section
        array( // The $args
            'option_1' // Should match Option ID
        )  
    ); 

    add_settings_field( // Option 2
        'option_2', // Option ID
        'Option 2', // Label
        'my_textbox_callback', // !important - This is where the args go!
        'general', // Page it will be displayed
        'my_settings_section', // Name of our section (General Settings)
        array( // The $args
            'option_2' // Should match Option ID
        )  
    ); 

    register_setting('general','option_1', 'esc_attr');
    register_setting('general','option_2', 'esc_attr');
}

function my_section_options_callback() { // Section Callback
    echo '<p>A little message on editing info</p>';  
}

function my_textbox_callback($args) {  // Textbox Callback
    $option = get_option($args[0]);
    echo '<input type="text" id="'. $args[0] .'" name="'. $args[0] .'" value="' . $option . '" />';
}
25
MrJustin

Besser ist es, ein WordPress-Options-Plugin zu verwenden. Eines der besten ist Advanced Custom Fields.

http://www.advancedcustomfields.com/

Wenn Sie ein Optionsseiten-Addon kaufen, können Sie eine unbegrenzte Optionsseite mit vielen Funktionen erstellen. Bitte was raus ein Video.

http://www.advancedcustomfields.com/add-ons/options-page/

Sehr nützliches Plugin und Addon.

0
Foxsk8