Как создать отдельный «виджет архива» только для моего cpt «портфолио»? - PullRequest
0 голосов
/ 20 февраля 2020

Я создаю одну собственную тему WordPress для своего портфолио, пытаюсь сделать все с нуля, используя поля и мета-блоки, и не хочу использовать плагин.

Я создал один cpt, как показано ниже :

function codex_custom_init() {

     register_post_type(
        'Portfolio', array(
        'labels' => array('name' => __( 'Portfolio' ), 'singular_name' => __( 'Portfolio' ) ),
        'public' => true,
        'has_archive' => true,
        'supports' => array('title', 'editor', 'thumbnail', 'comments'),
        'menu_icon' => 'dashicons-sos',
        )
    );

    //register taxonomy for portfolio post tags
    register_taxonomy( 
        'portfolio-tag', //taxonomy 
        'portfolio', //post-type
        array( 
            'hierarchical'  => false, 
            'label'         => __( 'Portfolio Tags','taxonomy general name'), 
            'singular_name' => __( 'Tag', 'taxonomy general name' ), 
            'rewrite'       => true, 
            'query_var'     => true 
        )
    );

    // add categories for Portfolio

    register_taxonomy(
            'portfoliocategories',
            'portfolio',
            array(
                'labels' => array(
                    'name' => 'Portfolio Categories',
                    'add_new_item' => 'Add New Portfolio Category',
                    'new_item_name' => "New Portfolio Type"
                ),
                'show_ui' => true,
                'show_tagcloud' => false,
                'hierarchical' => true
            )
        );

    }
    add_action( 'init', 'codex_custom_init' );

Я создал все необходимые страницы и боковые панели. Я хочу показать виджет архива на моей «странице архива портфолио», отдельный виджет архива, в котором будут только сообщения, связанные с портфелем. Спасибо за вашу заботу.

Как отредактировать и настроить это для cpt:

<?php
    wp_get_archives(
    apply_filters(
    'widget_archives_args',
    array(
        'type'   => 'monthly',
        'show_post_count' => $count,
        ),
        $instance
        )
        );
    ?>

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Там, где вы показываете свой виджет, поместите код в это условие.

if ( is_singular( 'yourcpt' ) ) {
    // conditional content/code

}
0 голосов
/ 20 февраля 2020

Используйте этот код для создания виджета боковой панели для пользовательского CPT. Для регистрации новой боковой панели.

// Register new sidebar with ID ==> deals-sidebar
genesis_register_sidebar( array(
    'id' => 'deals-sidebar',
    'name' => 'SideBar for Deals',
    'description' => 'SideBar for Deals Custom Post Type',
) );

Удалите боковую панель WordPress по умолчанию и добавьте хук действий, чтобы добавить новую боковую панель к сделкам CPT.

add_action('get_header','crunchify_update_deals_sidebar');
function crunchify_update_deals_sidebar() {
    if ( is_singular('deals')) { // Here "deals" is a slug name for my CPT
        remove_action( 'genesis_sidebar', 'genesis_do_sidebar' ); //remove the default genesis sidebar
        add_action( 'genesis_sidebar', 'crunchify_add_sidebar' ); //add an action hook to call the function for my custom sidebar
    }
}

//Function to output my custom sidebar
function crunchify_add_sidebar() {
    dynamic_sidebar( 'deals-sidebar' ); // id of sidebar which you just registered 
}

Надеюсь, это поможет !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...