¿Puedo crear una plantilla de página, usarla una vez, luego ocultar / eliminar la opción para usarla nuevamente?

2

Estoy trabajando en un tema / proyecto WP que incluye varias plantillas de página personalizadas que solo se usarán una vez cada una. Por ejemplo, hay una página con un mapa y un formulario de búsqueda para encontrar cosas en el mapa. Claramente, la página del mapa necesita una plantilla de página única, pero esa plantilla nunca se utilizará para ninguna otra página. Me gustaría ocultar o eliminar esta plantilla de página del menú desplegable "Plantilla", por lo que cuando el cliente está seleccionando plantillas de página, solo ven las opciones que deben seleccionar. ¿Alguien sabe cómo hacerlo o debería estar abordando esto desde un ángulo completamente diferente?

Gracias, Kirkland

++++++++++++++++++

ACTUALIZADO - Solución:

Para cada una de las plantillas de página que quería usar solo una vez (es decir, durante la configuración, antes de que el cliente tuviera acceso) simplemente quité ...

/*
Template Name: NAME_HERE
*/

Para que no se muestre como una opción al agregar una nueva página. Luego reemplacé todo en page.php con esto ...

if ( is_front_page() ) { include('page-home.php'); }
elseif ( is_page(22) ) { include('page-something.php'); }
elseif ( is_page(48) ) { include('page-whatever.php'); }
else{ include('page-default.php'); }

Todo lo que estaba en page.php se mueve a page-default.php . O simplemente puedes ponerlo todo dentro de la declaración else al final. De cualquier manera.

Esto me funciona porque haré la configuración para el cliente, por lo que crearé las páginas de "una sola vez" antes de entregarles este proyecto. Conoceré las ID de página.

Por cierto ... No es necesario mantener el esquema de denominación page-XXX.php para que esto funcione. Simplemente lo hice para poder agruparlos más fácilmente.

Dejé el comentario "Nombre de la plantilla" en las páginas que deseo que el cliente pueda seleccionar al agregar páginas (por ejemplo, "ancho completo" page-full.php ) y no agregué una condición if ni las incluí en page.php .

    
pregunta Kirkland 27.04.2012 - 18:47

2 respuestas

4

Si una página no funciona sin una plantilla específica, simplemente eliminaría la necesidad de que seleccionen una plantilla. Filtre template_include y seleccione la plantilla según la página solicitada:

function wpse50455_template_include( $template ) {
    // check if it's a page
    if ( is_page() ):
        $this_page_id = get_query_var( 'page_id' );
        // check for presence of meta data to determine what template you need
        // return the desired template if required
        return get_stylesheet_directory_uri() . '/my-special-template.php';
    endif;

    return $template;
}
add_filter( 'template_include', 'wpse50455_template_include' );
    
respondido por el Milo 27.04.2012 - 19:32
4

WordPress ya tiene una jerarquía de plantillas de página incorporada para manejar esta situación exacta. No necesita modificar su código page.php o agregar un filtro, simplemente siga las convenciones de nomenclatura para la jerarquía:

  • archivo de plantilla personalizada: la plantilla de página asignada a la página. Ver get_page_templates ().
  • page- {slug} .php - Si el slug de la página es noticias recientes, WordPress buscará usar page-recent-news.php
  • page- {id} .php: si el ID de página es 6, WordPress buscará usar page-6.php
  • page.php
  • index.php

de enlace

La forma más flexible es usar el Control de página. Cree una plantilla, por ejemplo: page-my-slug.php y luego cree una nueva página con my-slug como es slug.

En su ejemplo, 'page-something.php' se cargará automáticamente por WordPress para la página con el slug 'algo'. Si desea utilizar la ID de página en su lugar, desde su ejemplo cree 'page-22.php' como su plantilla.

    
respondido por el Sandra 04.11.2014 - 04:42

Lea otras preguntas en las etiquetas