2015-10-17 81 views
0

我已經創建了一個自定義帖子類型的汽車,我引導了此tutorial。我有一個問題,我得到404返回而不是archive-car.phpsingle-car.php。我也嘗試將複數版本添加到模板名稱,但是,沒有成功。什麼可能是錯的?我錯過了什麼嗎?未找到自定義帖子類型模板

<?php 
if(! function_exists('quote_create_post_type')) : 
    function quote_create_post_type() { 
     $labels = array(
      'name' => 'Cars', 
      'singular_name' => 'Car', 
      'add_new' => 'Add Car', 
      'all_items' => 'All Cars', 
      'add_new_item' => 'Add Car', 
      'edit_item' => 'Edit car', 
      'new_item' => 'New car', 
      'view_item' => 'View car', 
      'search_items' => 'Search cars', 
      'not_found' => 'No cars found', 
      'not_found_in_trash' => 'No cars found in trash', 
      'parent_item_colon' => 'Parent car' 
      //'menu_name' => default to 'name' 
     ); 
     $args = array(
      'labels' => $labels, 
      'public' => true, 
      'has_archive' => true, 
      'publicly_queryable' => true, 
      'query_var' => true, 
      'rewrite' => true, 
      'capability_type' => 'post', 
      'hierarchical' => false, 
      'supports' => array(
       'title', 
       'editor', 
       'excerpt', 
       'thumbnail', 
       //'author', 
       //'trackbacks', 
       //'custom-fields', 
       //'comments', 
       'revisions', 
       //'page-attributes', // (menu order, hierarchical must be true to show Parent option) 
       //'post-formats', 
      ), 
      'menu_position' => 5, 
      'exclude_from_search' => true, 
      'register_meta_box_cb' => 'quote_add_post_type_metabox' 
     ); 
     register_post_type('car', $args); 
     //flush_rewrite_rules(); 

     register_taxonomy('quote_category', // register custom taxonomy - category 
      'car', 
      array(
       'hierarchical' => true, 
       'labels' => array(
        'name' => 'Brands', 
        'singular_name' => 'Brand', 
       ) 
      ) 
     ); 

    } 
    add_action('init', 'quote_create_post_type'); 


    function quote_add_post_type_metabox() { // add the meta box 
     add_meta_box('quote_metabox', 'Car Details', 'quote_metabox', 'car', 'normal'); 
    } 


    function quote_metabox() { 
     global $post; 
     // Noncename needed to verify where the data originated 
     echo '<input type="hidden" name="quote_post_noncename" value="' . wp_create_nonce(plugin_basename(__FILE__)) . '" />'; 

     // Get the data if its already been entered 
     $quote_post_name = get_post_meta($post->ID, '_quote_post_name', true); 
     $quote_post_desc = get_post_meta($post->ID, '_quote_post_desc', true); 

     // Echo out the field 
     ?> 

     <table class="form-table"> 
      <tr> 
       <th> 
        <label>Brand</label> 
       </th> 
       <td> 
        <input type="text" name="quote_post_name" value="<?php echo $quote_post_name; ?>"> 
        <!-- classes: .small-text .regular-text .large-text --> 
       </td> 
      </tr> 
      <tr> 
       <th> 
        <label>Description</label> 
       </th> 
       <td> 
        <textarea name="quote_post_desc" class="large-text"><?php echo $quote_post_desc; ?></textarea> 
       </td> 
      </tr> 
     </table> 
    <?php 
    } 


    function quote_post_save_meta($post_id, $post) { // save the data 

     /* 
     * We need to verify this came from our screen and with proper authorization, 
     * because the save_post action can be triggered at other times. 
     */ 

     if (! isset($_POST['quote_post_noncename'])) { // Check if our nonce is set. 
      return; 
     } 

     if(!wp_verify_nonce($_POST['quote_post_noncename'], plugin_basename(__FILE__))) { // Verify that the nonce is valid. 
      return $post->ID; 
     } 

     // verify this came from the our screen and with proper authorization, 
     // because save_post can be triggered at other times 
     if(!wp_verify_nonce($_POST['quote_post_noncename'], plugin_basename(__FILE__))) { 
      return $post->ID; 
     } 

     // is the user allowed to edit the post or page? 
     if(! current_user_can('edit_post', $post->ID)){ 
      return $post->ID; 
     } 
     // ok, we're authenticated: we need to find and save the data 
     // we'll put it into an array to make it easier to loop though 

     $quote_post_meta['_quote_post_name'] = $_POST['quote_post_name']; 
     $quote_post_meta['_quote_post_desc'] = $_POST['quote_post_desc']; 

     // add values as custom fields 
     foreach($quote_post_meta as $key => $value) { // cycle through the $quote_post_meta array 
      // if($post->post_type == 'revision') return; // don't store custom data twice 
      $value = implode(',', (array)$value); // if $value is an array, make it a CSV (unlikely) 
      if(get_post_meta($post->ID, $key, FALSE)) { // if the custom field already has a value 
       update_post_meta($post->ID, $key, $value); 
      } else { // if the custom field doesn't have a value 
       add_post_meta($post->ID, $key, $value); 
      } 
      if(!$value) { // delete if blank 
       delete_post_meta($post->ID, $key); 
      } 
     } 
    } 
    add_action('save_post', 'quote_post_save_meta', 1, 2); // save the custom fields 
endif; // end of function_exists() 


if(! function_exists('view_quotes_posts')) : // output 
    function view_quotes_posts($do_shortcode = 1, $strip_shortcodes = 0) { 

     $args = array(
      'posts_per_page'  => 10, 
      'offset'   => 0, 
      //'category'  => , 
      'orderby'   => 'menu_order, post_title', // post_date, rand 
      'order'   => 'DESC', 
      //'include'   => , 
      //'exclude'   => , 
      //'meta_key'  => , 
      //'meta_value'  => , 
      'post_type'  => 'car', 
      //'post_mime_type' => , 
      //'post_parent'  => , 
      'post_status'  => 'publish', 
      'suppress_filters' => true 
     ); 

     $posts = get_posts($args); 

     $html = ''; 
     foreach ($posts as $post) { 
      $meta_name = get_post_meta($post->ID, '_quote_post_name', true); 
      $meta_desc = get_post_meta($post->ID, '_quote_post_desc', true); 
      $img = get_the_post_thumbnail($post->ID, 'medium'); 
      if(empty($img)) { 
       $img = '<img src="'.plugins_url('/img/default.png', __FILE__).'">'; 
      } 


      if(has_post_thumbnail($post->ID)) { 
       $img = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail'); 
       $img_url = $img[0]; 

       //the_post_thumbnail('thumbnail'); /* thumbnail, medium, large, full, thumb-100, thumb-200, thumb-400, array(100,100) */ 
      } 

      $content = $post->post_content; 
      if($do_shortcode == 1) { 
       $content = do_shortcode($content); 
      } 
      if($strip_shortcodes == 1) { 
       $content = strip_shortcodes($content); 
      } 
      $content = wp_trim_words($content, 30, '...'); 
      $content = wpautop($content); 

      $html .= ' 
      <div> 
       <h3>'.$post->post_title.'</h3> 
       <div> 
        <p>Name: '.$meta_name.'</p> 
        <p>Description: '.$meta_desc.'</p> 
       </div> 
       <div>'.$img.'</div> 
       <div>'.$content.'</div> 
      </div> 
      '; 
     } 
     $html = '<div class="wrapper">'.$html.'</div>'; 
     return $html; 
    } 
endif; // end of function_exists() 
?> 

更多信息

所有我做的是延長TwentyFifteen主題。

回答

2

如果我不得不把錢放在這裏,我會說你沒有更新你的固定鏈接!只需轉到設置>>固定鏈接>>帖子名稱

codex提供多一點信息:

注:在某些情況下,固定鏈接結構必須被更新用於查看自定義後類型職位時要訪問的新模板文件。爲此,請轉到管理面板>設置>固定鏈接,將固定鏈接結構更改爲不同的結構,保存更改並將其更改回所需的結構。

相關問題