Uso de single.php desde la carpeta de complementos en lugar de la carpeta de plantillas predeterminada

2

Estoy tratando de averiguar cómo usar otro single.php para un complemento personalizado que estoy creando. Es para un tipo de publicación personalizada.

Porque si la gente instala este complemento, no tendrá el archivo personalizado único.php en su carpeta de temas. Por eso quiero que esté en la carpeta de complementos.

¿Hay alguna forma de cambiar la ruta de acceso de este tipo de publicación personalizada single.php o una forma de generar automáticamente el archivo en la carpeta del tema después de instalar este complemento?

Gracias de antemano

    
pregunta user3428971 30.11.2015 - 11:52

3 respuestas

3

Creo que un gancho en template_include como descrito aquí podría ser una forma adecuada de hacer esto.

El código podría ser así:

add_filter('template_include', 'my_plugin_templates');
function my_plugin_templates( $template ) {
    $post_types = array('post');

    if (is_singular($post_types)) {
        $template = 'path/to/singular/template/in/plugin/folder.php';
    }

    return $template;
}
    
respondido por el flomei 30.11.2015 - 12:00
1

Los complementos nunca deben * tener ningún efecto visual que no sea un widget o un shortcode. Si sientes la necesidad de manipular los archivos de temas, lo más probable es que lo hagas mal.

* siempre hay excepciones, como apuntar a un tema específico o hacer algo que sea tan agnóstico del tema (como popup / lightbox) que hay muy pocas posibilidades de romper el tema o de obtener un resultado feo.

EDITAR de COMENTARIOS

Este es un problema de línea de borde sin ningún tipo de respuesta blanco / negro. Por lo que describiste, deberías haber hecho un tema y no un complemento, pero entiendo que te dieron la tarea. La forma correcta es como con woocommerce: códigos cortos y widgets que muestran el contenido administrado como CPT, de lo contrario es más probable que no juegues bien con todos los temas

    
respondido por el Mark Kaplun 30.11.2015 - 12:12
0

Donde get_custom_post_type_template es la función que WordPress debe llamar cuando se está recuperando el contenido. Tenga en cuenta que la función de filtro que define el complemento debe devolver una ruta completa a un archivo de plantilla o la página resultante estará en blanco. El archivo de plantilla debe tener las mismas entradas que el archivo single.php en el tema. Para obtener más información, visite el sitio.

 <?php
    function get_custom_post_type_template($single_template) {
    global $post;

       if ($post->post_type == 'my_post_type') {
          $single_template = dirname( __FILE__ ) . '/post-type-template.php';
       }
    return $single_template;
    }
    add_filter( 'single_template', 'get_custom_post_type_template' );
?>
    
respondido por el kamleshpal 07.09.2016 - 13:54

Lea otras preguntas en las etiquetas