Фреймворк Cherry добавляет пользовательский тип записи
Ищу некоторую информацию, поскольку документы разработчика для платформы cherry, похоже, не существуют.
Я пытаюсь добавить пользовательский тип сообщения со следующим кодом в мой файл инициализации темы: (этот код отлично работает в стандартной установке, используемой с темой с фреймворком cherry, он не отображается, я просто получаю ошибку 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 для категории и одна страница.
Кому-нибудь удалось добавить новый тип сообщения в структуру cherry и может указать мне правильное направление для его правильной интеграции?
2 answers
В конце вашего кода после последнего } добавьте:
add_action('init,'products_post_type');
Убедитесь, что вы добавляете это в файл в /wp-content/your_custom_theme/includes/theme-init.php файл, а затем, конечно, обновите постоянную ссылку.
С помощью CherryFramework убедитесь, что вы не изменяете ни один из файлов в папке CherryFramework, иначе вы проиграете, когда произойдет обновление.
Я только что протестировал ваш код на своем сайте для разработчиков Cherry, и он отлично работал. Должно быть что-то большее в вашем тема-инициализация?
Попробуйте добавить:
add_action( 'init', 'products_post_type' );
Как вы можете видеть в примере Кодекса для register_post_type()
вы должны добавить свою функцию в хук инициализации, чтобы она на самом деле была запущена . В противном случае то, что у вас есть, - это функция, которая определена, но никогда не выполняется.
Если вы сделали это с темой по умолчанию, то вы добавляли функцию в крючок действия. Я не знаю, что такое файл theme-init.php
в рамках Cherry, но типы сообщений действительно не относятся к теме в любом случае. Что происходит, когда вы нужно сменить тему?
Я бы предложил перенести ваш код типа сообщения в плагин или даже в плагин для конкретных сайтов с фрагментами