¿La mejor manera de presentar opciones para la página de inicio en admin?

6

Tengo un sitio con una página de inicio personalizada, home.php. ¿Cuál es la forma correcta de presentar las opciones de página de inicio editables en la herramienta de administración?

Por ejemplo, hay algunos campos de texto personalizados en la página de inicio que deberían ser editables en la herramienta de administración. Estoy buscando la mejor manera de configurarlo para que un usuario administrador pueda cambiar estas opciones.

ACTUALIZACIÓN: imagine un sitio con una página de inicio con un anuncio publicitario (cadena de texto) que necesito para permitir que los usuarios administrativos (personas que no son de tecnología) se actualicen fácilmente. Estoy intentando averiguar cómo presentar una pantalla en el administrador que dice "¿Qué texto promocional desea en la página de inicio? [ _ __ _ __ _ __ _

pregunta Eric 19.06.2013 - 00:24

6 respuestas

11

Hay muchas soluciones para este problema. Y cada uno de ellos es correcto, supongo. Depende de lo que realmente desee y de lo que sea más fácil de usar / claro para el usuario / administrador de esta página.

Usualmente uso 3 formas de resolver esto. ¿Cuál de ellas elegí? Depende de la situación. A veces uso 2 de ellos simultáneamente.

1. Solución estática de portada.

Cuando puedo configurar la página estática como página frontal, lo hago. Luego cree la plantilla de página front-page.php y utilícela para definir el aspecto que debería tener la página de inicio / la página de inicio.

Para mostrar / permitir editar algunos campos personalizados en esta página, uso el complemento Campos personalizados avanzados . Le permite definir campos personalizados para la portada (y mucho más). Luego uso la plantilla front-page.php para mostrar los valores de estos campos personalizados, donde deberían mostrarse.

Si algunos de estos valores deberían repetirse en cada página (en el pie de página, en el encabezado, etc.), obtengo estos valores de la página de inicio de esta forma:

$cf_value = get_post_meta( get_option('page_on_front'), '<CUSTOM FIELD NAME>', true );

Es una solución muy fácil y limpia, cuando no hay muchos campos que deban repetirse en otras páginas. Es fácil de usar, supongo. Si desea editar la página de inicio, solo tiene que ir y hacerlo, puede editar todo en el editor de la página de inicio.

2. Solución universal.

La otra solución que utilizo es definir algunas opciones de tema. Es mucho mejor cuando desea definir el aspecto de la página (imagen del logotipo, fondos, etc.) y no solo el contenido (especialmente si se refiere al contenido de una sola página).

Normalmente uso el complemento OptionTree para hacer esto. Pero no es tan difícil hacerlo solo.

Realmente no me gusta la idea, que debería editar el contenido de la página en opciones de tema, por lo que no uso esta solución muy a menudo.

3. Cuando este contenido siempre se repite en otras páginas

A veces tienes que mostrar algunos valores en cada página (o en la mayoría de ellos) y no solo en la página de inicio. Entonces, la solución "más agradable", creo, es definir estas áreas como barras laterales y permitir al usuario editarlas utilizando widgets.

Si este contenido repetido es solo una línea (línea de información de copyright en pie de página, etc.) y no se cambiará a menudo, probablemente usaría la solución 1. Pero si es más complejo o se cambiará a menudo, Esta solución es la mejor, supongo.

    
respondido por el Krzysiek Dróżdż 22.06.2013 - 09:10
4

Yo sugeriría crear un metabox para la plantilla de página home.php. Esto se hace fácilmente con el complemento de Campos personalizados avanzados (ACF). Incluso puede usar "ACF Lite" si desea incluirlos en su tema, en lugar de usar el complemento. Esta es una forma rápida y fácil de implementar exactamente lo que está buscando.

  • Cree un Metabox personalizado que solo aparezca en la página que usa el archivo de plantilla "home.php".
  • Agregue esto fácilmente a su archivo de plantilla home.php y cree un estilo personalizado.

Pude crear el metabox y crear un resultado de estilo personalizado en el archivo de plantilla en menos de 5 minutos. Aquí está el código que utilicé y el proceso paso a paso.

  1. Instalar el complemento ACF & Actívalo. (Busque Campos personalizados avanzados por "Elliot Condon", puede hacerlo a través de su panel de WordPress o puede hacerlo manualmente desde el repositorio de Wordpress aquí: enlace
  2. Agregue el bloque de código etiquetado "functions.php" al archivo "function.php" de su tema activo.

    if(function_exists("register_field_group")) 
    {
    register_field_group(array (
        'id' => 'acf_home-page-promotional-text',
        'title' => 'Home Page Promotional Text',
        'fields' => array (
            array (
                'default_value' => '',
                'formatting' => 'none',
                'key' => 'field_51c5184b7c590',
                'label' => 'Promo Text',
                'name' => 'promo_text',
                'type' => 'text',
                'instructions' => 'What promotional text would you like?',
            ),
        ),
        'location' => array (
            array (
                array (
                    'param' => 'page_template',
                    'operator' => '==',
                    'value' => 'home.php',
                    'order_no' => 0,
                    'group_no' => 0,
                ),
            ),
        ),
        'options' => array (
            'position' => 'normal',
            'layout' => 'no_box', // change 'no_box' to 'default' for box look.
            'hide_on_screen' => array (
            ),
        ),
        'menu_order' => 0,
    ));  
    }
    
  3. Ir a la página de inicio (esta página debe usar el archivo de plantilla home.php Editar página- > Atributos- > menú desplegable Plantilla).

  4. Vaya a su archivo de plantilla "home.php" y agregue el siguiente código para mostrar el contenido del metabox personalizado, que en este caso recibe el "nombre" de 'promo_text'.

    <?php if( get_field('promo_text') ) { ?>
        <h3>
            <?php echo get_field('promo_text'); ?>
        </h3>
    <?php } ?> 
    

    Nota: get_field es una función del complemento ACF. Si prefiere utilizar la función incorporada WP, puede usar: "get_post_meta ($ post_id, $ key, $ single);" en lugar. Aquí hay un ejemplo de eso.

    <?php
    if( get_post_meta($post->ID, $'promo_text', true) ) { ?>
    <h3>
    <?php echo get_post_meta($post->ID, 'promo_text', true); ?>
    </h3>
    <?php } ?>
    

Esto es lo que parece cuando se edita la página de inicio: Enlace de imagen más grande

Ahora verás el metabox. Tenga en cuenta que puede hacer esto fácilmente sin el complemento, solo tiene que incluir la carpeta de complementos en su carpeta de temas y agregar un include () al archivo de funciones activas de su tema.

Recomiendo este complemento ... es muy intuitivo y tiene mucha documentación. Si usas este complemento y var_dump (), puedes resolverlo todo muy rápidamente.

Espero que esto ayude!

    
respondido por el nuResponse 22.06.2013 - 06:10
2

Es difícil distinguir con tu pregunta qué estás haciendo exactamente, pero si estás utilizando la API de opciones , entonces get_option acepta un segundo parámetro para los valores predeterminados. Del Codex:

$no_exists_value = get_option('no_exists_value');
var_dump($no_exists_value); /* ouput false */

$no_exists_value = get_option('no_exists_value','default_value');
var_dump($no_exists_value); /* output default_value */

Si está utilizando la API de personalización de temas , entonces get_theme_mod , como get_option , también acepta un segundo parámetro para sus valores predeterminados.

Con cualquiera de las dos opciones, deberá crear la interfaz de back-end. Si usa la API de Opciones, cree una página de configuración add_menu_page y / o add_submenu_page , o una de estas funciones relacionadas .

Si usa el Personalizador de temas, y no estoy seguro de si eso se ajusta a su proyecto, hay un conjunto completamente diferente de funciones y técnicas .

    
respondido por el s_ha_dum 19.06.2013 - 01:21
1

Si entiendo su pregunta correctamente, desea crear un panel de opciones de tema para un administrador de WordPress. puede entrar (por ejemplo) 'hola, mundo!' en un cuadro de texto, pulsa Guardar cambios y en la parte delantera del sitio web "¡Hola, mundo!" se mostrará donde sea que decida llamarlo en su plantilla.

Puedes hacer esto usando la API de opciones, como s_ha_dum estaba hablando, pero creo que si pensaste que su respuesta no contenía suficientes detalles, lo que realmente quieres decir es que es más complicado que tú. estaban esperando.

Por lo tanto, te aconsejo que instales el Option Tree que te permitirá crear rápida y fácilmente. un panel de opciones de tema (en el menú Apariencia) con un campo de texto que dice "¿Qué texto promocional desea en la página de inicio?". Luego, todo lo que tiene que hacer es llamar el valor de esa opción en su plantilla home.php usando la función del Árbol de opciones.

Espero que esto ayude!

    
respondido por el tacudtap 22.06.2013 - 00:41
1

Si estuviera en tu lugar, habría agregado la palabra personalizada a la página admin / config del tema. Esto sería más fácil para mí porque:

  • La funcionalidad relacionada con la modificación de la vista ya existe en la página de administración del tema.
  • Solo necesito agregar una nueva referencia de variable allí.
  • La promoción que aparece en carga es definitivamente una parte del tema específico y, por lo tanto, debe ser parte de los controles del tema.

El camino a seguir sería agregar un nuevo gancho.  Puede ir con mi forma preferida aquí o la forma general del enlace del complemento detallada here

    
respondido por el Srihari 26.06.2013 - 04:52
1

La forma en que lo abordaría (y tengo algo similar en este momento), es la siguiente:

  1. Cree una nueva entrada de menú en el menú de configuración (configuración - > configuración de la página de inicio), o cree un nuevo elemento de menú de la página de inicio, en Comentarios, por ejemplo, o en el endo de su menú, o donde sea te gusta. Luego, en ese nuevo elemento del menú, crea tu página.

  2. En la página mencionada en el paso 1, creas todas las configuraciones de administrador para la página de inicio (los ajustes actuales y futuros).

  3. Asegúrese de que la página (y sus enlaces de menú) solo estén disponibles para los usuarios administradores a través de una verificación de roles

  4. Si lo desea, puede hacer su solución anterior como parte de un complemento que crea específicamente la página de configuración adicional y alejarla del tema. Debido a que este no es un problema relacionado con el tema, sino la administración del área de administración.

Para mí, como mencioné anteriormente, estoy haciendo algo en ese sentido y he creado un complemento. Esto me ayuda en el futuro, si quiero cambiar mi tema, no necesito revisar lo que se debe eliminar y guardar en mi código.

Espero que esto ayude.

    
respondido por el Greeso 26.06.2013 - 06:02

Lea otras preguntas en las etiquetas