我正在嘗試創建一個名爲products
的WordPress自定義帖子類型。在我的主題function.php
文件中,我編寫了代碼(請參閱下面的代碼)。在WordPress管理員中,我可以看到一個名爲Products
的新菜單。我甚至創建了一個新產品,寫下它的標題和內容並保存。WordPress無法在single.php頁面上顯示自定義帖子類型
到目前爲止,一切都很好。我甚至可以在首頁看到新的「產品」文章。
但是,當我點擊它時,WordPress無法找到它並顯示404 not found
錯誤頁面。但是對於一個WordPress正常的post
類型,它不會像那樣發生,只有發生這種情況時纔會使用自定義帖子類型。我在谷歌搜索了很多,並遵循他們的指示,但他們都沒有解決我的問題。
請幫助。下面是我的代碼:
<?php
add_action('init', 'product_register');
function product_register() {
\t $labels = array(
\t \t 'name' => _x('Products', 'post type general name', 'your-plugin-textdomain'),
\t \t 'singular_name' => _x('Product', 'post type singular name', 'your-plugin-textdomain'),
\t \t 'menu_name' => _x('Products', 'admin menu', 'your-plugin-textdomain'),
\t \t 'name_admin_bar' => _x('Product', 'add new on admin bar', 'your-plugin-textdomain'),
\t \t 'add_new' => _x('Add New', 'product', 'your-plugin-textdomain'),
\t \t 'add_new_item' => __('Add New Product', 'your-plugin-textdomain'),
\t \t 'new_item' => __('New Product', 'your-plugin-textdomain'),
\t \t 'edit_item' => __('Edit Product', 'your-plugin-textdomain'),
\t \t 'view_item' => __('View Product', 'your-plugin-textdomain'),
\t \t 'all_items' => __('All Products', 'your-plugin-textdomain'),
\t \t 'search_items' => __('Search Products', 'your-plugin-textdomain'),
\t \t 'parent_item_colon' => __('Parent Products:', 'your-plugin-textdomain'),
\t \t 'not_found' => __('No products found.', 'your-plugin-textdomain'),
\t \t 'not_found_in_trash' => __('No products found in Trash.', 'your-plugin-textdomain')
\t);
\t $args = array(
\t \t 'labels' => $labels,
\t \t 'public' => true,
\t \t 'publicly_queryable' => true,
\t \t 'show_ui' => true,
\t \t 'show_in_menu' => true,
\t \t 'query_var' => true,
\t \t 'rewrite' => array('slug' => 'product'),
\t \t 'capability_type' => 'post',
\t \t 'has_archive' => true,
\t \t 'hierarchical' => false,
\t \t 'menu_position' => null,
\t \t 'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments')
\t);
register_post_type('product' , $args);
\t flush_rewrite_rules();
}
add_filter('pre_get_posts', 'my_get_posts');
function my_get_posts($query) {
\t if ((is_home() && $query->is_main_query()) || is_feed())
\t $query->set('post_type', array('post', 'product'));
\t return $query;
}
?>
我的代碼主要是基於幫助下this link
您是否已經在模板目錄中生成文件'single-product.php'? – 2014-12-13 04:23:02
刪除'flush_rewrite_rules();',這是一個非常昂貴的函數,只能在主題激活或插件激活時運行一次。在刪除之後,手動刷新您的固定鏈接 – 2014-12-13 04:23:33
此外,此行if((is_home()&& $ query-> is_main_query())|| is_feed())'if(($ query-> is_home )&& $ query-> is_main_query())|| $ query-> is_feed())' – 2014-12-13 04:24:27