1

通常、オンラインで検索したり、終わりのない実験を行ったりして、答えを見つけるために最善を尽くします。今回は本当に絶望的です。関連する多くの質問を読みましたが、私の問題に対する解決策はありません。

他の多くのテーマで「get_template_part」を使用していますが、うまく機能しました。今回は何が違うのかわかりません。

私のテーマには、カスタム投稿タイプeventが登録されています。イベントの投稿の URL は、 example.com/event/wine-tastingのようになります。

問題は、 example.com /event/ がすべてのイベント投稿を並べる代わりに 404 ページを返すことです (loop-event.php)。

ここに私のarchive.phpがあります:

<?php get_header(); ?>
<?php if ( have_posts() ) the_post();?>
<?php rewind_posts();?>
<?php $post_type = get_post_type();
    get_template_part( 'loop', $post_type );?>
<?php get_footer(); ?>

これが私の loop-event.php です:

<?php get_header(); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <div class="container">
        <?php the_title();?>
        <?php the_content();?>
    </div>
<?php endwhile; ?>

これは、カスタム投稿タイプ「イベント」を登録する方法です。

function yd_create_post_type_event() 
{
$labels = array(
    'name' => __( 'Events','yd'),
    'singular_name' => __( 'Event','yd' ),
    'add_new' => __('Add New','yd'),
    'add_new_item' => __('Add New Event','yd'),
    'edit_item' => __('Edit Event','yd'),
    'new_item' => __('New Event','yd'),
    'view_item' => __('View Event','yd'),
    'search_items' => __('Search Event','yd'),
    'not_found' =>  __('No event found','yd'),
    'not_found_in_trash' => __('No event found in Trash','yd'), 
    'parent_item_colon' => ''
  );

  $args = array(
    'labels' => $labels,
    'public' => true,
    'exclude_from_search' => false,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'show_in_menu' => true,
    'show_in_admin_bar' => true,
    'query_var' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => 5,
    'menu_icon' => 0,
    'supports' => array('title','editor','excerpt')

  ); 

 register_post_type('event',$args);
}

register_taxonomy(
    "event-category", 
    array("event"), 
    array(
        "hierarchical" => true, 
        "label" => __( "Event Categories",'yd' ), 
        "singular_label" => __( "Event Category",'yd' ), 
        "rewrite" => array('slug' => 'event')
    )
); 

よろしくお願いします。私はすべてを試しましたが、ばかげた間違いを犯したのは私だったらよかったのにと思います。しかし、ここまでうまくできませんでした。前もって感謝します!

4

2 に答える 2

4

WordPress に新しいカスタム投稿タイプを追加するときは、パーマリンクをフラッシュ/更新する必要があります。次の場所に移動して、[変更を保存Settings > Permalinks] ボタンをクリックしてください(これを 2 回行ってください)。これで問題が解決するはずです。

于 2013-03-22T20:49:42.407 に答える
0

WordPress によって生成された書き換えルールをフラッシュする必要があります。

以下のように関数を作成します。

function rewrite_flush() {
    flush_rewrite_rules();
}

カスタム投稿タイプがテンプレートに含まれている場合:

add_action( 'after_switch_theme', 'rewrite_flush' );

カスタム投稿タイプがプラグインにある場合:

register_activation_hook( __FILE__, 'rewrite_flush' );

その逆は、@Sunny Johalの答えです。

于 2013-03-23T17:31:47.630 に答える