Soporte » WordPress Avanzado » Funcion add_settings_field, para que sirve?

  • Resuelto inigonz

    (@inigonz)


    Buenas a todos,

    No entiendo que hace la función add_settings_field.
    Ahora mismo veo que cuando la pongo con el callback, me crea un th vacío que no me gusta.

    He creado una pagina de menú para las opciones del tema,

    add_menu_page(
    	"Theme Opciones",
    	"Theme Opciones",
    	"manage_options",
    	"options",
    	"functionsLogos", 
    	"dashicons-clipboard"
    );

    En la función callback “functionsLogos”,

    function functionsLogos() {
    ?>
    	<form id="logosForm" method="post" action="options.php">
    <?php
    		settings_fields( "sectionLogos" );
    		do_settings_sections( "settingLogos" );
    		submit_button();
    ?>
    	</form>
    <?php
    }

    Creo las secciones y los campos con su callback de los campos en el admin_init,

    function registerLogos() {
    	add_settings_section( 'sectionLogos', 'LOGOS', 'viewLogos', 'settingLogos' );
    	//add_settings_field( 'viewLogosID', '', 'viewLogos', 'settingLogos', 'sectionLogos' );
    
    	register_setting( 'sectionLogos', 'logos', 'logos_sanitize_settings' );
    }
    add_action( 'admin_init', 'registerLogos' );
    
    function logos_sanitize_settings( $input ) {
    	$input['blanco'] 	= sanitize_text_field( $input['blanco'] );
    	$input['azul'] 		= sanitize_text_field( $input['azul'] );
    	$input['gris'] 		= sanitize_text_field( $input['gris'] );
    	$input['negro'] 	= sanitize_text_field( $input['negro'] );
    	$input['mobile'] 	= sanitize_text_field( $input['mobile'] );
    	$input['desktop'] 	= sanitize_text_field( $input['desktop'] );
    
    	return $input;
    }

    Y la función de la vista,

    function viewLogos() {
    	$logos = get_option('logos');
    ?>
    	<div>
    		<p><label for="logos[blanco]">Logo Blanco</label></p>
    		<input type="text" name="logos[blanco]" value="<?php echo esc_attr($logos['blanco']); ?>" />
    		<img src="<?php echo esc_attr($logos['blanco']); ?>" />
    	</div>
    <?php
    }

    Entonces el add_settings_field que tengo comentado que haría? he estado leyendo el codex, viendo otras paginas y no llego a comprender que me hace, ya que con esa funcion comentada y poniedo la funcion de vista en el section me funciona perfectamente.

    Muchas gracias de antemano por la ayuda.

    Saludos

Viendo 6 respuestas - 1 de 6 (de 6 total)
  • Moderador almendron

    (@almendron)

    inigonz

    (@inigonz)

    Muchas gracias por la respuesta Almendron.
    Acabo de comprender que esa función te crea como un bloque para esos campos, columna izquierda con el label de la función y columna derecha con los campos que se añaden en el callback.
    Es necesario poner la función? si no la pones afecta a algo?

    Gracias

    Moderador almendron

    (@almendron)

    Tendría que comprobarlo para poder decirte algo. De todas formas, haz tú mismo la prueba y así podrás salir de dudas.

    inigonz

    (@inigonz)

    A mi sin ello me está funcionando correctamente, pero era por saber, no vaya a ser que se me este escapando algo.

    Muchas gracias, un saludo

    Moderador almendron

    (@almendron)

    La función “add_settings_field()” añade el campo a la sección “General” y, por tanto, no es necesaria si usas “add_settings_section” porque estás creando una nueva sección para el campo que añades después.

    inigonz

    (@inigonz)

    ok, perfecto. Muchísimas gracias.

    Un saludo

Viendo 6 respuestas - 1 de 6 (de 6 total)
  • Debes estar registrado para responder a este tema.