Allgemeine Einstellungen: Anzeige des benutzerdefinierten Plugin-Felds nach dem Feld Site-Adresse

Für mein Feld für benutzerdefinierte Einstellungen suche ich direkt nach dem Feld Site Address (URL) auf der Seite Allgemeine Einstellungen.

Ich kann das benutzerdefinierte Feld erfolgreich mit dem add_settings_field() hinzufügen. Standardmäßig wird das benutzerdefinierte Feld unten hinzugefügt. Mit jQuery konnte ich mein benutzerdefiniertes Feld nach der Site-Adresse (URL) anzeigen:

 add_action( 'admin_footer', 'wpse_243810_admin_footer' ); function wpse_243810_admin_footer() { ?>  jQuery('#protocol_relative').closest('tr').insertAfter('#home-description').closest('tr');  <?php } 

Es sieht jedoch stattdessen wie folgt aus:

Wenn ich den Code betrachte, fügt er mein benutzerdefiniertes Feld in das

-Element des Site Address-Felds ein. Wie bekomme ich es statt dessen raus? Im Folgenden finden Sie die Code-Snippets für jedes Feld.

     

Enter the address here if you want your site home page to be different from your WordPress installation directory.

Dies ist das benutzerdefinierte Feld, das mein Plugin generiert, das ich nachher einfügen möchte:

  Protocol Relative URL  
Protocol Relative URL

Only the internal links will be affected.

Solutions Collecting From Web of "Allgemeine Einstellungen: Anzeige des benutzerdefinierten Plugin-Felds nach dem Feld Site-Adresse"

Ich habe es anhand der folgenden jQuery-function herausgefunden. Das #protocol_relative ist das Feld, das ich #protocol_relative und #home-description ist das Feld, in das ich es nachher #protocol_relative :

 add_action( 'admin_footer', 'insert_field' ); function insert_field() { # Insert the settings field after the 'Site Address (URL)' ?>  < ?php } 

Ich denke, das ist nicht möglich, ohne die Core-Dateien zu modifizieren. Wir haben nur einmal do_settings_fields und do_settings_sections in der options-permalink.php zwischen Zeile 226 und 232 für den optional Abschnitt.

 ...  < ?php do_settings_fields('permalink', 'optional'); ?>  < ?php do_settings_sections('permalink'); ?> < ?php submit_button(); ?> ... 

Die WordPress functionen add_settings_field und add_settings_section verwenden die Einstellungen api . In den coredateien befinden sich die functionen do_settings_fields und do_settings_sections , die benutzerdefinierte Felder oder Abschnitte hinzufügen (die Sie mit dieser API hinzufügen). Diese sind erforderlich, um alles auf einer Seite zu platzieren. Auch diese functionen werden nur im Optionsbereich der Permalinkseite platziert (hardcodiert). Sie haben keinen Zugangspunkt in der Genabschnitt wie für die Optionen Abschnitt.

Sie könnten nur den add_settings_section vor add_settings_field fehlen. Das funktioniert und speichert das Feld in einer option , aber ich knöpfe diesen Teil möglicherweise ein. Ich wollte nur früher als die Checks in options-permalink.php Haken.

 < ?php // ADD SETTINGS add_action('admin_head', function(){ // Create a section after the permalink add_settings_section( 'permalink_relative_setting_section_options', // id __( 'Protocol Relative URL', 'textdomain' ), // title 'premalink_relative_setting_section_callback_function', // callback 'permalink' // page ); // Add a field to the section add_settings_field( 'permalink_relative_settings_field-id', // id '', // title 'permalink_relative_settings_field_callback', // callback 'permalink', // page 'permalink_relative_setting_section_options', // section array( 'some_arg' => 'For use in the callback' ) // args ); }); // SECTION function premalink_relative_setting_section_callback_function( $args ) { // Echo SECTION intro text here /* echo '

id: ' . esc_html( $args['id'] ) . '

'; // id: eg_setting_section echo '

title: ' . apply_filters( 'the_title', $args['title'] ) . '

'; // title: Example settings section in reading echo '

callback: ' . esc_html( $args['callback'] ) . '

'; // callback: eg_setting_section_callback_function */ } // FIELD function permalink_relative_settings_field_callback( $args ) { $options = get_option( 'permalink_relative_setting_section_options' ); $html = ''; $html .= ''; echo $html; } // UPDATE add_action( 'init', function() { // If permalink structure is detected, let's update our option before the page can act if ( isset( $_POST[ 'permalink_structure' ] ) || isset( $_POST[ 'category_base' ] ) ) { check_admin_referer( 'update-permalink' ); $options = get_option( 'permalink_relative_setting_section_options' ); $options[ 'relative_checkbox' ] = ( isset( $_POST[ 'permalink_relative_setting_section_options' ][ 'relative_checkbox' ] ) && $_POST[ 'permalink_relative_setting_section_options' ][ 'relative_checkbox' ] === '1' ) ? '1' // checked : ''; update_option( 'permalink_relative_setting_section_options', $options ); } } );

Wechseln

Wenn Sie auf https://github.com/WordPress/WordPress/blob/master/wp-admin/options-permalink.php#L178 schauen, gibt es keine Haken, um das zu tun, was Sie wollen.

Betrachten Sie insertAfter Manipulationsmethoden wie insertAfter und insertAfter die Sie in admin_footer .

 jQuery('

Protocol Relative URL Form!

').insertAfter('.form-table.permalink-structure');