Creé un tipo de publicación personalizada:
register_post_type('sample_post_type',array(
'labels' => array(
'name' => _x('Sample Posts', 'post type general name'),
'singular_name' => _x('Sample Post', 'post type singular name')
),
'public' => true,
'show_in_nav_menus' => false,
'exclude_from_search' => true
));
¿Cómo puedo desactivar la vista de publicación única para este tipo de publicación específica? Mostrar un 404 simple está bien, o redirigir a la página de inicio. Esto está dentro de un complemento, por lo que no puedo crear un archivo single-sample_post_type.php para configurar una página vacía.
fuente
get_current_user_id()
evalúa a 0.is_singular('post-type-slug')
en laif()
condición en lugar de 2 condiciones?Solo estableciendo el argumento
cuando llamas a register_post_type ()
fuente
Una forma más sencilla de hacerlo puede ser pasar los siguientes argumentos al registrar el Tipo de publicación personalizada
fuente
publically_querable
ser cierto para que funcionen los archivos de tipo de publicación.Uno. De su archivo de funciones.
Dos. Desde su archivo single.cpt.php:
fuente
single-cpt_name.php
archivo personalizado , no podría hacerlo. Si coloca la función en un archivo de complemento simple, puede activar / desactivar sin editar ningún archivo.Trabajando a partir de la muy buena respuesta de Sven, reescribí su función para que sea más fácil agregar múltiples tipos de publicaciones usando
in_array()
la declaración if y luego redirigiendo a la página de archivo en lugar de la página de inicio.(por cierto, creo que la configuración
query_var
y / opublically_queryable
falso deshabilitará no solo las vistas individuales, sino también la vista de archivo nativa, anulando'has_archive' => true
. En ese caso, aún puede configurar una WP_query personalizada y crear su propia página de archivo, en una plantilla, pero la consulta principal ya no lo hará, ¿verdad?)fuente
Probé todos los mencionados anteriormente y la solución real es más simple que cualquier redirección sugerida.
Para que el archivo sea accesible y enumere los elementos, y la publicación única no sea accesible y se redirija automáticamente al conjunto 404
al registrar su CPT. Si establece
publicly_queryable
en falso, sus archivos serán redirigidos a su hogar, cualquier otro combo no funcionará. Establecer elquery_var
falso y eso es todo.Aquí está el CPT completo https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a
ver línea 50 https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a#file-thz_cpt_items_single_view_redirect-php-L50
como se indica aquí
https://codex.wordpress.org/Function_Reference/register_post_type
fuente
En caso de que desee deshabilitar por completo la vista única de tipo de publicación personalizada en la interfaz pero poder mostrar la página de archivo, las cosas se están volviendo un poco complicadas.
La configuración
publicly_queryable
enfalse
orewrite
parafalse
evitará que se muestren vistas individuales y de archivo. No hay marca en losregister_post_type
argumentos de la función para evitar crear solo reglas de reescritura de vista única.https://github.com/WordPress/WordPress/blob/5.2.3/wp-includes/class-wp-post-type.php#L540
Sin embargo, puede eliminar la etiqueta de reescritura después de registrar su tipo de publicación y esto dejará intactas las reglas de reescritura de la vista de archivo, pero eliminará solo las reglas de reescritura de una sola vista.
Otra ventaja es que a partir de ahora puede crear páginas simples de WordPress utilizando la estructura de enlace permanente de tipo de publicación de evento (
event/simple-page
) que puede ser útil en sitios web complejos.Recuerde eliminar las reglas de reescritura después de la modificación del código.
fuente