web-dev-qa-db-ja.com

フロントエンドのカテゴリページにカスタム投稿タイプからの投稿を表示する

カスタム投稿タイプ(bizdirectory)を作成し、新しい投稿(Test Business)を作成し、新しいカテゴリ(Business Directory)を作成しました。ただし、プライマリナビゲーションにビジネスディレクトリカテゴリ(slug = business)を追加すると、リンクが表示され、カテゴリとして登録されますが、「見つかりません」と表示されます。

私が自分のサイトでTest Businessを検索すると(それはトップページの検索バーを使って)それを見つける - それが示すURLは - http://www.domain.com/dev/である。 bizdirectory = test-business - 私のfunctions.phpのコードは以下のとおりです。

// Load Custom Post Type 
function add_bizdirectory() {
    $labels = array( 
        'name' => __( 'Businesses', 'text_domain' ),
        'singular_name' => __( 'Business', 'text_domain' ),
        'add_new' => __( 'Add New Business', '${4:Name}', 'text_domain' ),
        'add_new_item' => __( 'Add New Business', 'text_domain}' ),
        'edit_item' => __( 'Edit Business', 'text_domain' ),
        'new_item' => __( 'New Business', 'text_domain' ),
        'view_item' => __( 'View Business', 'text_domain' ),
        'search_items' => __( 'Search Businesses', 'text_domain' ),
        'not_found' => __( 'No Businesses found', 'text_domain' ),
        'not_found_in_trash' => __( 'No Businesses found in Trash', 'text_domain' ),
        'parent_item_colon' => __( 'Parent Business:', 'text_domain' ),
        'menu_name' => __( 'Business Directory', 'text_domain' ),
    );
    $args = array( 
        'labels' => $labels,
        'hierarchical' => true,
        'description' => 'description',
        'taxonomies' => array( 'category' ),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,
        'show_in_nav_menus' => true,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => true,
        'capability_type' => 'post', 
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'custom-fields', 'revisions', 'post-formats' ),
    );
    register_post_type( 'bizdirectory', $args );
}
add_action( 'init', 'add_bizdirectory' );
// End

私は手動でwp_optionsから書き換え規則を削除するものを除いてすべての書き換え規則オプションを試しました - それはwp_optionsに現れませんでした。

私はあなたが私に与えることができるどんな助けやアドバイスにも感謝します:)

1
Paxjah

私は答えを見つけました。私は標準の投稿タイプとカスタムの投稿タイプの違い、そしてそれらの分類法を完全に誤解していました。私はいくつかの非常に有用な記事を見つけました、そして、以下のコードは私が最終的に得たもの、そして私が有用だと思った記事のいくつかです。私は他の人がこれが役に立つことを願っています。

// Load Custom Post Type 
function add_directory() {
    $labels = array( 
    'name'               => __( 'Businesses', 'text_domain' ),
        'singular_name'      => __( 'Business', 'text_domain' ),
        'add_new'            => __( 'Add New Business', '${4:Name}', 'text_domain' ),
        'add_new_item'       => __( 'Add New Business', 'text_domain}' ),
        'edit_item'          => __( 'Edit Business', 'text_domain' ),
        'new_item'           => __( 'New Business', 'text_domain' ),
        'view_item'          => __( 'View Business', 'text_domain' ),
        'search_items'       => __( 'Search Businesses', 'text_domain' ),
        'not_found'          => __( 'No Businesses found', 'text_domain' ),
        'not_found_in_trash' => __( 'No Businesses found in Trash', 'text_domain' ),
        'parent_item_colon'  => __( 'Parent Business:', 'text_domain' ),
        'menu_name'          => __( 'Business Directory', 'text_domain' ),
    );
    $args = array( 
        'labels'              => $labels,
        'hierarchical'        => true,
        'description'         => 'description',
        'taxonomies'          => array( 'biz-cat' ),
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'menu_position'       => 5,
        //'menu_icon'         => '',
        'show_in_nav_menus'   => true,
        'publicly_queryable'  => true,
        'exclude_from_search' => false,
        'has_archive'         => true,
        'query_var'           => true,
        'can_export'          => true,
        'rewrite'             => true,
        'capability_type'     => 'post', 
        'supports'            => array( 'title', 'editor', 'author', 'thumbnail', 'custom-fields', 'revisions', 'post-formats' ),
    );
    register_post_type( 'bizdirectory', $args );
}
add_action( 'init', 'add_directory' );

// Create Custom Taxonomy
function directory_create_taxonomies() 
{
    register_taxonomy( 'biz-cat', array( 'bizdirectory' ), array(
        'hierarchical' => true,
        'label' => 'Business Categories',
        'singular_name' => 'Business Category',
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'biz-cat' )
    ));
}
add_action( 'init', 'directory_create_taxonomies', 0 );

// 'bizdirectory' is the registered post type name
function directory_columns($defaults) {
    // 'biz-cat' is the registered taxonomy name
    $defaults['biz-cat'] = 'Business Category';
    return $defaults;
}
function directory_custom_column($column_name, $post_id) {
    $taxonomy = $column_name;
    $post_type = get_post_type($post_id);
    $terms = get_the_terms($post_id, $taxonomy);

    if ( !empty($terms) ) {
        foreach ( $terms as $term )
            $post_terms[] = "<a href='edit.php?post_type={$post_type}&{$taxonomy}={$term->slug}'> " . esc_html(sanitize_term_field('name', $term->name, $term->term_id, $taxonomy, 'edit')) . "</a>";
        echo join( ', ', $post_terms );
    }
    else echo '<i>Not assigned.</i>';
}
add_filter( 'manage_project_posts_columns', 'directory_columns' );
add_action( 'manage_project_posts_custom_column', 'directory_custom_column', 10, 2 );
0
Paxjah

投稿のカテゴリを分離し、CPTカテゴリにカスタム分類タイプを使用することをお勧めします。

あなたはあなたのregister cpt codeにこの行を追加するでしょう

'taxonomies'   => array( 'bizdirectory-type' ),

コードのこの行を置き換えます。

'taxonomies' => array( 'category' ),

そして、このコードをfunctions.phpに追加してください。

add_action( 'init', 'wpsites_custom_taxonomy_types' );
function wpsites_custom_taxonomy_types() {

register_taxonomy( 'bizdirectory-type', 'bizdirectory',
    array(
        'labels' => array(
            'name'          => _x( 'Types', 'taxonomy general name', 'wpsites' ),
            'add_new_item'  => __( 'Add New Bizdirectory Type', 'wpsites' ),
            'new_item_name' => __( 'New Bizdirectory Type', 'wpsites' ),
        ),
        'exclude_from_search' => true,
        'has_archive'         => true,
        'hierarchical'        => true,
        'rewrite'             => array( 'slug' => 'bizdirectory-type', 'with_front' => false ),
        'show_ui'             => true,
        'show_tagcloud'       => false,
    ));

}
1
Brad Dalton