Agregar tipo de publicación personalizada con soporte para categorías personalizadas en WordPress

10.08.19

Al escribir sitios en WordPress, a veces la funcionalidad de encabezado estándar no es suficiente, y es necesario agregar una nueva sección personalizada (o varias secciones) al sitio. Considere agregar sus propios tipos de registro con plantillas separadas. Escriba todo el código presentado en el archivo functions.php de su tema.

Todo el código se ve así:

function custom_cat() {
    // create a new taxonomy
    register_taxonomy(
        'timeline',
        'timeline-item',
        array(
            'label' => __( 'TL Category' ),
            'rewrite' => array( 'slug' => 'timeline', 'with_front' => false ),
            'capabilities' => array(
                'manage_terms' => 'manage_categories',
                'edit_terms' => 'manage_categories',
                'delete_terms' => 'manage_categories',
                'assign_terms' => 'edit_posts',
            ),
            'show_ui' => true,
            'show_tagcloud' => false,
            'hierarchical' => true
        )
    );
}
add_action( 'init', 'custom_cat' );
 
function create_post_type() {
 
    register_post_type( 'timeline-item',
        array(
            'labels' => array(
                'name' => __( 'Timeline item' ),
                'singular_name' => __( 'Timeline item' ),
            ),
            'rewrite' => array( 'slug' => 'timeline/%timeline%', 'with_front' => false ),
            'public' => true,
            'taxonomies'  => array( 'timeline' ),
            'hierarchical' => true,
            'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments', 'custom-fields' )
        )
    );
    flush_rewrite_rules();
}
add_action( 'init', 'create_post_type' );
 
//fix sef
function wpa_show_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == 'timeline-item' ){
        $terms = wp_get_object_terms( $post->ID, 'timeline' );
        if( $terms ){
            return str_replace( '%timeline%' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );

Las plantillas de taxonomía se crean en la raíz de su tema. En este caso, para las categorías, el archivo se llamará taxonomy-timeline.php, y para la entrada taxonomy-timeline-item.php.

Aparecerá una nueva sección en el menú de administración.

blog comments powered by Disqus