Enfoque correcto para el estilo / plantilla de salida de plugin

4

Estoy creando un complemento que necesita generar elementos en la parte delantera del sitio. Intenté mantener el aspecto predeterminado lo más limpio posible, pero también me gustaría facilitar la modificación a los usuarios.

Mi idea es incluir la capacidad de cargar una hoja de estilo personalizada en lugar de la predeterminada, si el usuario crea una hoja de estilo con un nombre particular en su tema. ¿Algún indicador sobre cómo construir esa funcionalidad?

En el caso más extremo en que el usuario desea cambiar completamente el HTML / PHP utilizado para la salida, creé una acción y adjunté mi función de visualización a esa acción. De esta manera, un usuario puede desajustar mi función de visualización predeterminada y adjuntar su función de visualización personalizada mediante el gancho disponible.

¿Es este el enfoque correcto para abordar esto?

    
pregunta urok93 17.02.2013 - 18:01

1 respuesta

6

Hazlo lo más simple posible para los desarrolladores de temas. La mayoría no son programadores. Hay dos opciones muy simples:

add_theme_support () y get_theme_support ()

Proporcione un identificador y algunas opciones. Digamos que su identificador es drtanz_plugin . El autor de un tema ahora podría agregar lo siguiente a functions.php de su tema:

add_action( 'after_setup_theme', 'prefix_register_theme_support' );

function prefix_register_theme_support()
{
    add_theme_support(
        'drtanz_plugin',
        array (
            'template'   => get_template_directory() . '/templates/drtanz_plugin.php',
            'stylesheet' => FALSE
        )
    );
}

En tu complemento puedes verificar el soporte del tema ahora:

$plugin_options = array (
    'template'      => get_template_directory() . '/templates/drtanz_plugin.php',
    'stylesheet'    => plugins_url( 'default.css', __FILE__ ),
    'show_comments' => TRUE
);

if ( $theme_options = get_theme_support( 'drtanz_plugin' ) )
    $plugin_options = array_merge( $plugin_options, $theme_options );

El autor del tema no cambió el parámetro show_comments , por lo que usa el valor predeterminado.

Pro: fácil de extender, realmente potente.
Contras: Puede que ya sea demasiado difícil para algunas personas.

Usar Locate_template ()

Hice eso en mi complemento Vista previa de la marcación rápida de T5 Opera . Solo verifica si hay una plantilla con un nombre dado en el tema e intenta obtener la ruta. Si no se encontró ninguna plantilla, use la suya.

$template = 'speed-dial.php';
$path     = locate_template( array ( $template ) );

if ( '' != $path and file_exists( $path ) )
    require $path;
else
    require dirname( __FILE__ ) . "/$template";

Pro: Fácil de aprender. Solo asegúrate de que el nombre que usas sea único. Puede agregar *_theme_support características más adelante si las necesita.
Con: En realidad es solo la plantilla, no hay características adicionales. Y no puedes cambiar el nombre de la plantilla más tarde, porque eso rompería las cosas.

Puedes combinar ambos enfoques, pero solo usaría uno. Es más fácil de aprender.

    
respondido por el fuxia 17.03.2013 - 05:03

Lea otras preguntas en las etiquetas