Framework cherry aggiungendo tipo post personalizzato
-
29-09-2020 - |
Domanda
Alla ricerca di alcune informazioni come i documenti dello sviluppatore per il quadro della ciliegia sembrano essere inesistenti.
Sto cercando di aggiungere un post-tipo personalizzato con il seguente codice nel mio file di init del tema: (Questo codice funziona bene in un'installazione standard utilizzata con un tema con il quadro di ciliegio, non viene visualizzato ho solo un errore 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' );
?>
.
Dopo aver creato nuovi prodotti, non riesco a visualizzare il post, ricevo solo un errore 404, per la categoria e la singola pagina.
Qualcuno è riuscito ad aggiungere un nuovo post-tipo al quadro di ciliegio e può indicarmi nella giusta direzione per integrarlo correttamente?
Soluzione
Alla fine del codice dopo l'ultimo} aggiungi:
add_action('init,'products_post_type');
.
Assicurati di aggiungerlo al file nel file /wp-content/your_custom_theme/includes/theme-init.php file, quindi ovviamente aggiorna il permalink.
Con la ciliegina, assicurati di non modificare nessuno dei file nella cartella CherryFramework, o si perderai quando si verifica un aggiornamento.
Ho appena testato il tuo codice su un sito di Cherry Dev che ho, e ha funzionato bene.Ci deve essere più al tuo tema-init?
Altri suggerimenti
Prova ad aggiungere:
add_action( 'init', 'products_post_type' );
.
Come puoi vedere nell'esempio del codex per register_post_type()
Devi aggiungere la funzioneIl gancio iniziale, in modo che sia effettivamente esecuzione .Altrimenti, ciò che hai, è una funzione definita, ma mai eseguita.
Se lo hai fatto con un tema predefinito, si stava aggiungendo la funzione a un gancio d'azione.Non so quale sia un file theme-init.php
nel quadro di ciliegio, ma i tipi di post davvero non appartengono comunque un tema.Cosa succede quando è necessario cambiare temi?
Suggerirei di spostare il codice di tipo post su un plugin o anche a Plugin snippet specifico del sito