Вишневые рамки Добавление пользовательского типа поста
-
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
находится в вишневом каркасе, но типы постов действительно не принадлежат в теме.Что происходит, когда вам нужно менять темы?
Я бы предположил, чтобы переместить код вашего типа в плагине или даже