Saltar al contenido

Wordpress: ¿cómo puedo cargar una plantilla de página desde un complemento?

Solución:

Puedes usar el theme_page_templates filtrar para agregar plantillas a la lista desplegable de plantillas de página como esta:

function wpse255804_add_page_template ($templates) {
    $templates['my-custom-template.php'] = 'My Template';
    return $templates;
    }
add_filter ('theme_page_templates', 'wpse255804_add_page_template');

Ahora WP estará buscando my-custom-template.php en el directorio de temas, por lo que tendrá que redirigirlo a su directorio de complementos utilizando el page_template filtrar así:

function wpse255804_redirect_page_template ($template) {
    if ('my-custom-template.php' == basename ($template))
        $template = WP_PLUGIN_DIR . '/mypluginname/my-custom-template.php';
    return $template;
    }
add_filter ('page_template', 'wpse255804_redirect_page_template');

Lea más sobre esto aquí: Agregue una página de plantilla personalizada mediante programación

Esta es una combinación de la respuesta anterior y los comentarios anteriores que terminaron funcionando para mí.

La función para agregar el complemento a la lista de plantillas disponibles:

function wpse255804_add_page_template ($templates) {
    $templates['my-custom-template.php'] = 'My Template';
    return $templates;
    }
add_filter ('theme_page_templates', 'wpse255804_add_page_template');

La función para apuntar la plantilla al directorio apropiado dentro del complemento:

function wpse255804_redirect_page_template ($template) {
    $post = get_post();
    $page_template = get_post_meta( $post->ID, '_wp_page_template', true );
    if ('my-custom-template.php' == basename ($page_template))
        $template = WP_PLUGIN_DIR . '/mypluginname/my-custom-template.php';
    return $template;
    }
add_filter ('page_template', 'wpse255804_redirect_page_template');
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *