Вишневые рамки Добавление пользовательского типа поста

wordpress.stackexchange https://wordpress.stackexchange.com/questions/158622

  •  29-09-2020
  •  | 
  •  

Вопрос

Ищете некоторую информацию, как документы разработчика для вишневой структуры, кажется, не существуют.

Я пытаюсь добавить пользовательский пост-тип со следующим кодом в файле My Theme-init: (Этот код работает нормально в стандартной установке, используемой с темой с вишневой структурой, она не отображает, я просто получаю ошибку 404)

    <?php

add_action( 'after_setup_theme', 'my_setup' );

if ( ! function_exists( 'my_setup' ) ):

function my_setup() {

    // This theme styles the visual editor with editor-style.css to match the theme style.
    add_editor_style();

    // This theme uses post thumbnails
    if ( function_exists( 'add_theme_support' ) ) { // Added in 2.9
        add_theme_support( 'post-thumbnails' );
        set_post_thumbnail_size( 299, 190, true ); // Normal post thumbnails
        add_image_size( 'slider-post-thumbnail', 1386, 563, true ); // Slider Thumbnail
        add_image_size( 'slider-thumb', 96, 41, true ); // Slider Small Thumbnail
    }

    // Add default posts and comments RSS feed links to head
    add_theme_support( 'automatic-feed-links' );

    // custom menu support
    add_theme_support( 'menus' );
    if ( function_exists( 'register_nav_menus' ) ) {
        register_nav_menus(
            array(
              'top_header_menu' => 'Top Header Menu',
              'header_menu' => 'Header Menu',
              'footer_menu' => 'Footer Menu'
            )
        );
    }
}
endif;


/* Slider */
function my_post_type_slider() {
    register_post_type( 'slider',
                array( 
                'label' => __('Slides', CURRENT_THEME), 
                'singular_label' => __('Slide', CURRENT_THEME),
                '_builtin' => false,
                'exclude_from_search' => true, // Exclude from Search Results
                'capability_type' => 'page',
                'public' => true, 
                'show_ui' => true,
                'show_in_nav_menus' => false,
                'rewrite' => array(
                    'slug' => 'slide-view',
                    'with_front' => FALSE,
                ),
                'query_var' => "slide", // This goes to the WP_Query schema
                'menu_icon' => get_template_directory_uri() . '/includes/images/icon_slides.png',
                'supports' => array(
                        'title',
                        'custom-fields',
            'thumbnail')
                    ) 
                );
}

add_action('init', 'my_post_type_slider');



/* Portfolio */
function my_post_type_portfolio() {
    register_post_type( 'portfolio',
                array( 
                'label' => __('Projects', CURRENT_THEME),
                'singular_label' => __('Project', CURRENT_THEME),
                '_builtin' => false,
                'public' => true, 
                'show_ui' => true,
                'show_in_nav_menus' => true,
                'hierarchical' => true,
                'capability_type' => 'page',
                'menu_icon' => get_template_directory_uri() . '/includes/images/icon_portfolio.png',
                'rewrite' => array(
                    'slug' => 'portfolio-view',
                    'with_front' => FALSE,
                ),
                'supports' => array(
                        'title',
                        'editor',
                        'thumbnail',
                        'excerpt',
                        'custom-fields',
                        'comments')
                    ) 
                );
    register_taxonomy('portfolio_category', 'portfolio', array('hierarchical' => true, 'label' => 'Categories', 'singular_name' => 'Category', "rewrite" => true, "query_var" => true));
    register_taxonomy('portfolio_tag', 'portfolio', array('hierarchical' => false, 'label' => 'Tags', 'singular_name' => 'Tag', 'rewrite' => true, 'query_var' => true));
}

add_action('init', 'my_post_type_portfolio');


/* Testimonial */
function my_post_type_testi() {
    register_post_type( 'testi',
                array( 
                'label' => __('Testimonial', CURRENT_THEME), 
                'public' => true, 
                'show_ui' => true,
                'show_in_nav_menus' => false,
                'menu_position' => 5,
                'rewrite' => array(
                    'slug' => 'testimonial-view',
                    'with_front' => FALSE,
                ),
                'supports' => array(
                        'title',
                        'custom-fields',
                        'thumbnail',
                        'editor')
                    ) 
                );
}

add_action('init', 'my_post_type_testi');


/* Services */
function my_post_type_services() {
    register_post_type( 'services',
                array( 
                'label' => __('Services', CURRENT_THEME), 
                'public' => true, 
                'show_ui' => true,
                'show_in_nav_menus' => false,
                'menu_position' => 5,
                'rewrite' => array(
                    'slug' => 'services-view',
                    'with_front' => FALSE,
                ),
                'supports' => array(
                        'title',
                        'thumbnail',
                        'editor')
                    ) 
                );
}

add_action('init', 'my_post_type_services');



/* FAQs */
function phi_post_type_faq() {
    register_post_type('faq', 
                array(
                'label' => __('FAQs', CURRENT_THEME),
                'singular_label' => __('FAQ', CURRENT_THEME),
                'public' => false,
                'show_ui' => true,
                '_builtin' => false, // It's a custom post type, not built in
                '_edit_link' => 'post.php?post=%d',
                'capability_type' => 'post',
                'hierarchical' => false,
                'rewrite' => array("slug" => "faq"), // Permalinks
                'query_var' => "faq", // This goes to the WP_Query schema
                'supports' => array('title','author','editor'),
                'menu_position' => 5,
                'publicly_queryable' => true,
                'exclude_from_search' => false,
                ));
}
add_action('init', 'phi_post_type_faq');


/* Our Team */
function my_post_type_team() {
    register_post_type( 'team',
                array( 
                'label' => __('Our Team', CURRENT_THEME), 
                'singular_label' => __('Person', CURRENT_THEME),
                '_builtin' => false,
                'exclude_from_search' => true, // Exclude from Search Results
                'capability_type' => 'page',
                'public' => true, 
                'show_ui' => true,
                'show_in_nav_menus' => false,
                'menu_position' => 5,
                'rewrite' => array(
                    'slug' => 'team-view',
                    'with_front' => FALSE,
                ),
                'supports' => array(
                        'title',
                        'custom-fields',
                        'editor',
            'thumbnail')
                    ) 
                );
}

add_action('init', 'my_post_type_team');

function products_post_type() {

    $labels = array(
        'name'                => _x( 'Products', 'Post Type General Name', 'text_domain' ),
        'singular_name'       => _x( 'Product', 'Post Type Singular Name', 'text_domain' ),
        'menu_name'           => __( 'Products', 'text_domain' ),
        'parent_item_colon'   => __( 'Parent Product:', 'text_domain' ),
        'all_items'           => __( 'All Products', 'text_domain' ),
        'view_item'           => __( 'View Product', 'text_domain' ),
        'add_new_item'        => __( 'Add New Product', 'text_domain' ),
        'add_new'             => __( 'New Product', 'text_domain' ),
        'edit_item'           => __( 'Edit Product', 'text_domain' ),
        'update_item'         => __( 'Update Product', 'text_domain' ),
        'search_items'        => __( 'Search products', 'text_domain' ),
        'not_found'           => __( 'No products found', 'text_domain' ),
        'not_found_in_trash'  => __( 'No products found in Trash', 'text_domain' ),
    );
    $args = array(
        'label'               => __( 'product', 'text_domain' ),
        'description'         => __( 'Product information pages', 'text_domain' ),
        'labels'              => $labels,
        'supports'            => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', ),
        'taxonomies'          => array( 'category', 'post_tag' ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5,
        'can_export'          => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'page',
    );
    register_post_type( 'product', $args );

}



// Hook into the 'init' action
add_action( 'init', 'products_post_type');



function my_connection_types() {
    p2p_register_connection_type( 
        array(
            'name' => 'testi_to_product',
            'from' => 'testi',
            'to' => 'product',
            'admin_box' => 
            array(
                'show' => 'any',
                'context' => 'advanced'
            )
        )
    );
}
add_action( 'p2p_init', 'my_connection_types' );
?>
.

После создания новых продуктов я не могу получить сообщение для отображения, я просто получаю ошибку 404, для категории и одной страницы.

Уместно удалось добавить новый тип Post-Type в вишневую структуру и может указать мне правильное направление для интеграции его правильно?

Это было полезно?

Решение

В конце вашего кода после последнего} Добавить:

add_action('init,'products_post_type');
.

Убедитесь, что вы добавляете это в файл в файле /wp-content/your_custom_theme/includes/theme-init.php, а затем, конечно, обновлять постоянную ссылку.

С помощью CherryFramework, убедитесь, что вы не изменяете какие-либо из файлов в папке CherryFramework, или вы проиграете, когда произойдет обновление.

Я только что проверил ваш код на сайте разработчиков вишни, и он работал нормально.Должен быть больше к вашей теме - init?

Другие советы

попробуйте добавить:

add_action( 'init', 'products_post_type' );
.

Как вы можете видеть в примере кодекса для register_post_type() Вы должны добавить вашу функциюИнинированный крючок, так что это на самом деле запустить .В противном случае, что у вас есть, это функция, которая определена, но никогда не выполняется.

Если вы сделали это с темой по умолчанию, вы добавили функцию к крючке действий.Я не знаю, какой файл theme-init.php находится в вишневом каркасе, но типы постов действительно не принадлежат в теме.Что происходит, когда вам нужно менять темы?

Я бы предположил, чтобы переместить код вашего типа в плагине или даже Плагин специфичных фрагментов сайта

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top