Tipos de publicaciones personalizadas de WordPress taxonomías, columnas y filtros de administración

Antes de sumergirme en este tutorial, lea mi primer tutorial sobre tipos de mensajes personalizados, donde he explicado algunos de los aspectos importantes de los CPT (tipos de mensajes personalizados). En este tutorial exploraremos más acerca de esta maravillosa característica en WordPress.

Este tutorial cubre cómo crear taxonomías personalizadas, columnas de administración, filtros de taxonomía y una página de archivo para su CPT. Vamos a empezar.


Taxonomía personalizada para tipos de correos personalizados

Las taxonomías son una excelente manera de agrupar cosas y ayudarnos a buscar publicaciones que pertenecen a un grupo específico. En WordPress generalmente usamos Categorías y Etiquetas como taxonomías. Los pasos a continuación explican cómo crear taxonomías personalizadas para su CPT..

Paso 1: Registrar la función personalizada

Abra su archivo de plugin, en nuestro caso Movie-Reviews.php y agrega el siguiente código para registrar la función personalizada.

add_action ('init', 'create_my_taxonomies', 0);

Paso 2: Implementación de la función personalizada y registro de taxonomía personalizada

function create_my_taxonomies () register_taxonomy ('movie_reviews_movie_genre', 'movie_reviews', array ('labels' => array ('name' => 'Movie Genre', 'add_new_item' => 'Add New Movie Genre', 'new_item_name' = > "Nuevo género tipo de película"), 'show_ui' => true, 'show_tagcloud' => false, 'hierarchical' => true)); 

Aquí el register_taxonomy La función hace todo el trabajo duro de crear una taxonomía personalizada (en nuestro caso, una categoría) con el nombre 'movie_reviews_movie_genre'para el tipo de mensaje personalizado'críticas de cine'. Las etiquetas definen las diferentes cadenas utilizadas en la sección de administración de la taxonomía..

  • 'show_ui' => true Se utiliza para hacer visible el editor de taxonomía en el panel de control..
  • 'show_tagcloud' => false Decodificar si la nube de etiquetas debe ser visible. En nuestro caso está deshabilitado..
  • 'hierarchical' => true Decodifica el formato de la taxonomía personalizada..

Nota: 'jerárquico' => falso convierte las categorías en etiquetas.

Paso 3: Visualización de taxonomías personalizadas

Después de guardar el Movie-Reviews.php archivo, abra su archivo de plantilla personalizada, en nuestro caso single-movie_reviews.php y agrega lo siguiente resaltado Código para hacer visibles las categorías en nuestros posts..

 
'críticas de cine', ); $ loop = new WP_Query ($ mypost); ?> have_posts ()): $ loop-> the_post ();?>
>
Título:
Director:
Género: ID, 'movie_reviews_movie_genre', ");?>
Clasificación: '; else echo ''; ?>

Paso 4: El Resultado

Aquí hemos agregado una taxonomía personalizada 'Género de película' en nuestras reseñas de películas CPT. Ahora podremos agregar nuevas categorías desde el panel de administración y asignar cada una de ellas a nuestro CPT.


Visualización de columnas adicionales

En la página de lista de CPT de administración de WordPress, de manera predeterminada, existen dos columnas, Fecha y Comentarios, a través de las cuales podemos ordenar esos elementos de CPT. Para agregar columnas adicionales y clasificación, siga los pasos que se indican a continuación..

Paso 1: Registrar la función

Abra el archivo de plugin Movie-Reviews.php y agregue la siguiente línea de código para registrar una función que se llamará cuando se esté preparando la página de lista de Críticas de películas.

add_filter ('manage_edit-movie_reviews_columns', 'my_columns');

Aquí hemos utilizado el filtro variable. manage_edit- (Custom_Post_Type) _columns, que pasa la lista de columnas del CPT como un argumento a la función.

Paso 2: Implementación de la Función

function my_columns ($ columnas) $ columnas ['movie_reviews_director'] = 'Director'; $ column ['movie_reviews_rating'] = 'Rating'; unset ($ columnas ['comentarios')); devuelve $ columnas; 

Aquí hemos añadido dos columnas: Director y Clasificación en el panel de administración del CPT y también eliminó la columna Comentarios del listado.

Paso 3: poblando las columnas

Registrar una función para rellenar las columnas..

add_action ('manage_posts_custom_column', 'populate_columns');

Paso 4: Implementación

function populate_columns ($ column) if ('movie_reviews_director' == $ column) $ movie_director = esc_html (get_post_meta (get_the_ID (), 'movie_director', true)); echo $ movie_director;  elseif ('movie_reviews_rating' == $ column) $ movie_rating = get_post_meta (get_the_ID (), 'movie_rating', true); echo $ movie_rating. ' estrellas'; 

Aquí, ya que la función se ejecuta cuando se procesa cualquiera de las columnas CPT, comprueba las columnas solicitadas actualmente antes de repetirlas. Hemos utilizado el get_the_ID () función para recuperar el índice de la fila actual y luego a su vez han utilizado el get_post_meta para recuperar los datos en la columna.

Paso 5: Registrar columnas como ordenables

Ahora, registremos una función para que se llame cuando WordPress identifique columnas clasificables en CPT.

add_filter ('manage_edit-movie_reviews_sortable_columns', 'sort_me');

Paso 6: Implementación

función sort_me ($ columnas) $ columnas ['movie_reviews_director'] = 'movie_reviews_director'; $ columnas ['movie_reviews_rating'] = 'movie_reviews_rating'; devuelve $ columnas; 

Esta función identifica dos columnas para hacerlas clasificables y luego devuelve la matriz. Pero nuestro trabajo aún no ha terminado..

Paso 7: Orden por campo personalizado

add_filter ('request', 'column_ordering'); add_filter ('request', 'column_orderby'); function column_orderby ($ vars) if (! is_admin ()) devuelve $ vars; if (isset ($ vars ['orderby']) && 'movie_reviews_director' == $ vars ['orderby']) $ vars = array_merge ($ vars, array ('meta_key' => 'movie_director', 'orderby' = > 'meta_valor'));  elseif (isset ($ vars ['orderby']) && 'movie_reviews_rating' == $ vars ['orderby']) $ vars = array_merge ($ vars, array ('meta_key' => 'movie_rating', 'orderby' => 'meta_value_num'));  devuelve $ vars; 

La función anterior está asociada con el filtro de solicitud y agrega elementos a la matriz de consulta, en función de las variables en la URL de consulta. En realidad, WordPress no sabe cómo ordenar por los campos 'Director de película' o 'Clasificación de película', por lo que debemos enseñar a WordPress cómo hacerlo a través de esta función.

Hemos añadido con éxito dos columnas clasificables en la sección de administración.


Creación de filtros con taxonomía personalizada

Aquí veremos cómo las taxonomías personalizadas (en este caso, las categorías) se pueden usar como un filtro adicional en la página de listado de CPT en el administrador de WordPress, para que los administradores puedan mostrar los elementos de CPT que pertenecen a una categoría específica.

Paso 1: Registrar la función

Abra su archivo de complemento y agregue el siguiente código para registrar una función a la que se va a llamar cuando WordPress se esté preparando para mostrar la lista desplegable de filtros.

add_action ('restrict_manage_posts', 'my_filter_list');

Paso 2: Implementación de la Función

function my_filter_list () $ screen = get_current_screen (); global $ wp_query; if ($ screen-> post_type == 'movie_reviews') wp_dropdown_categories (array ('show_option_all' => 'Mostrar todos los géneros de película', 'taxonomy' => 'movie_reviews_movie_genre', 'name' => 'movie oficial_movie_genre', 'orderby '=>' nombre ',' selected '=> (isset ($ wp_query-> query [' movie_reviews_movie_genre '])? $ wp_query-> query [' movie_reviews_movie_genre ']: "),' hierarchical '=> false,' depth '=> 3,' show_count '=> false,' hide_empty '=> true,));

Aquí hemos utilizado una variable global para conocer el tipo de publicación que se muestra y también usamos una variable de consulta posterior para verificar si ya existe un filtro y, en consecuencia, establecer el filtro. los wp_dropdown_categories La función se utiliza para mostrar todas las taxonomías registradas con los géneros de películas. Los 'orden por','show_count','hide_empty','profundidad'etc. son diferentes argumentos que especifican la clasificación, muestran los elementos cuentan en cada categoría, ocultan categorías no asociadas, determinan la profundidad máxima que se mostrará para las categorías jerárquicas respectivamente.

Paso 3: Mostrar los resultados filtrados

Ahora, una vez que se haya preparado la lista desplegable de filtros, escribiremos un código para mostrar los resultados filtrados. Registre una función que se llamará cuando se prepare la consulta de visualización posterior..

add_filter ('parse_query', 'perform_filtering');

Paso 4: Implementación de la función de visualización

function perform_filtering ($ query) $ qv = & $ query-> query_vars; if (($ qv ['movie_reviews_movie_genre']) && is_numeric ($ qv ['movie_reviews_movie_genre'))) $ term = get_term_by ('id', $ qv ['movie_reviews_movie_genre'], 'movieillance_movie_genre'); $ qv ['movie_reviews_movie_genre'] = $ term-> slug; 

los filtrar La función recibe el objeto de consulta posterior de WordPress actual y luego comienza con un puntero a las variables de consulta almacenadas dentro del objeto de consulta. Luego verifica si un género de película es una parte de las variables de consulta y luego ejecuta la consulta.

Ahora podrás usar el filtro para mostrar las películas por sus géneros.


Por último, pero no lo menos: crear una página de archivo

Como hemos creado una plantilla personalizada para nuestro CPT, también podemos crear una página de archivo personalizada que anule la plantilla de archivo predeterminada..

Paso 1: agregar un respaldo a la plantilla de archivo

Abra el archivo de plugin Movie-Reviews.php y el agregar el código resaltado en el include_template_function función.

La función include_template_function ($ template_path) if (get_post_type () == 'movie_reviews') if (is_single ()) // comprueba si el archivo existe en el tema primero, // de lo contrario, sirva el archivo desde el complemento if ($ theme_file = Locate_template (array ('single-movie_reviews.php'))) $ template_path = $ theme_file;  else $ template_path = plugin_dir_path (__FILE__). '/single-movie_reviews.php';  elseif (is_archive ()) if ($ theme_file = Locate_template (array ('archive-movie_reviews.php'))) $ template_path = $ theme_file;  else $ template_path = plugin_dir_path (__FILE__). '/archive-movie_reviews.php';  devolver $ template_path; 

WordPress busca en el directorio de temas un archivo de plantilla de archivo antes de usar el predeterminado. Esta función comprueba si el usuario ha proporcionado una plantilla de archivo en el directorio del tema, de lo contrario, busca el archivo en la carpeta del complemento..

Paso 2: crear la plantilla de archivo

Guarde y cierre el archivo de complemento y luego cree un nuevo archivo llamado archive-movie_reviews.php y añade el siguiente código en él.

 

Críticas de cine

Título Director
">
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>


Aquí hemos utilizado el bucle para recorrer las entradas de la publicación y luego mostrarlas utilizando un diseño de tabla. También hemos definido un menú de navegación si hay más elementos que el número máximo configurado en la configuración de WordPress. Los menús de navegación se muestran con el next_post_links y enlaces_post anteriores funciones.

Hemos utilizado lo global. wp_query Objeto que contiene los datos sobre la consulta actualmente ejecutada, para representar el contenido de la página. los get_post_meta La función se ha utilizado para recuperar datos de campo personalizados..

Paso 3: El Resultado

Guarde el archivo y consulte la página de archivo para ver la lista de archivos de Movie Reviews.


Aquí llegamos al final de este tutorial. Espero que hayas podido comprender el significado de los tipos de publicación personalizados. Hay más para explorar, solo juega con ello.

Gracias por leer y no dude en darnos su opinión..