カスタム分類のアーカイブを取得しようとすると、WPがページを検索しても何も見つかりません。
Functions.phpから私のコード:
add_action( 'init', 'register_store_taxonomy' );
function register_store_taxonomy()
{
$args = array (
'hierarchical' => TRUE
, 'label' => 'Store'
, 'public' => TRUE
, 'query_var' => 'store'
, 'rewrite' => TRUE
, 'show_in_nav_menus' => TRUE
, 'show_ui' => TRUE
);
register_taxonomy(
'store'
, array ( 'post', 'page' )
, $args
);
}
今私はstoreiTunesでタグ付けされた投稿を持っています。 /store/mac-store/
へのリンクをクリックすると、この分類法のすべての投稿をリストするはずです。そしてそれはします!ローカルサーバー上(Win7).
しかし、ステージングサーバー(ほぼ同じ設定のDebian)では、404ページ(および404ステータスヘッダー)が表示されます。
ゴミ箱の中にさえも、類似の名前やナメクジのページはありません。パーマリンクを数回更新しました。アクティブなプラグインはありません。私はGoogleを試しましたが、何も役に立つとは思えませんでした。
エラーを追跡するために、functions.phpに次のコードを追加しました。
add_action( 'wp_footer', 'dump_query' );
function dump_query()
{
if ( current_user_can( 'edit_posts' ) )
{
pre_dump( $GLOBALS['wp_query'] );
}
}
function pre_dump( $var, $print = TRUE )
{
$out = '<pre class="vardump">' . htmlspecialchars( var_export( $var, TRUE ) ) . '</pre>';
if ( ! $print )
return $out;
print $out;
}
WP_Query::__set_state(array(
'query_vars' =>
array (
'store' => 'iTunes',
'error' => '',
'm' => 0,
'p' => 0,
'post_parent' => '',
'subpost' => '',
'subpost_id' => '',
'attachment' => '',
'attachment_id' => 0,
'name' => '',
'static' => '',
'pagename' => '',
'page_id' => 0,
'second' => '',
'minute' => '',
'hour' => '',
'day' => 0,
'monthnum' => 0,
'year' => 0,
'w' => 0,
'category_name' => '',
'tag' => '',
'cat' => '',
'tag_id' => '',
'author_name' => '',
'feed' => '',
'tb' => '',
'paged' => 0,
'comments_popup' => '',
'meta_key' => '',
'meta_value' => '',
'preview' => '',
's' => '',
'sentence' => '',
'fields' => '',
'category__in' =>
array (
),
'category__not_in' =>
array (
),
'category__and' =>
array (
),
'post__in' =>
array (
),
'post__not_in' =>
array (
),
'tag__in' =>
array (
),
'tag__not_in' =>
array (
),
'tag__and' =>
array (
),
'tag_slug__in' =>
array (
),
'tag_slug__and' =>
array (
),
'meta_query' =>
array (
),
'ignore_sticky_posts' => false,
'suppress_filters' => false,
'cache_results' => true,
'update_post_term_cache' => true,
'update_post_meta_cache' => true,
'post_type' => '',
'posts_per_page' => 10,
'nopaging' => false,
'comments_per_page' => '50',
'no_found_rows' => false,
'taxonomy' => 'store',
'term' => 'iTunes',
'order' => 'DESC',
'orderby' => 'wp_posts.post_date DESC',
),
'tax_query' =>
WP_Tax_Query::__set_state(array(
'queries' =>
array (
0 =>
array (
'taxonomy' => 'store',
'terms' =>
array (
0 => 'iTunes',
),
'include_children' => true,
'field' => 'slug',
'operator' => 'IN',
),
),
'relation' => 'AND',
)),
'post_count' => 1,
'current_post' => -1,
'in_the_loop' => false,
'comment_count' => 0,
'current_comment' => -1,
'found_posts' => '1',
'max_num_pages' => 1,
'max_num_comment_pages' => 0,
'is_single' => false,
'is_preview' => false,
'is_page' => false,
'is_archive' => true,
'is_date' => false,
'is_year' => false,
'is_month' => false,
'is_day' => false,
'is_time' => false,
'is_author' => false,
'is_category' => false,
'is_tag' => false,
'is_tax' => true,
'is_search' => false,
'is_feed' => false,
'is_comment_feed' => false,
'is_trackback' => false,
'is_home' => false,
'is_404' => false,
'is_comments_popup' => false,
'is_paged' => false,
'is_admin' => false,
'is_attachment' => false,
'is_singular' => false,
'is_robots' => false,
'is_posts_page' => false,
'is_post_type_archive' => false,
'parsed_tax_query' => true,
'query' =>
array (
'store' => 'iTunes',
),
'request' => ' SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (135,134,133,132,131,130,129,128,125) ) AND wp_posts.post_type IN (\'post\', \'page\', \'attachment\') AND (wp_posts.post_status = \'publish\' OR wp_posts.post_author = 7 AND wp_posts.post_status = \'private\') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10',
'posts' =>
array ( /* cut out */),
'queried_object' =>
stdClass::__set_state(array(
'term_id' => '124',
'name' => 'iTunes',
'slug' => 'iTunes',
'term_group' => '0',
'term_taxonomy_id' => '125',
'taxonomy' => 'store',
'description' => '',
'parent' => '0',
'count' => '1',
)),
'queried_object_id' => 124,
))
WP_Query::__set_state(array(
'query_vars' =>
array (
'page' => 0,
'pagename' => 'iTunes',
'error' => '',
'm' => 0,
'p' => 0,
'post_parent' => '',
'subpost' => '',
'subpost_id' => '',
'attachment' => '',
'attachment_id' => 0,
'name' => 'iTunes',
'static' => '',
'page_id' => 0,
'second' => '',
'minute' => '',
'hour' => '',
'day' => 0,
'monthnum' => 0,
'year' => 0,
'w' => 0,
'category_name' => '',
'tag' => '',
'cat' => '',
'tag_id' => '',
'author_name' => '',
'feed' => '',
'tb' => '',
'paged' => 0,
'comments_popup' => '',
'meta_key' => '',
'meta_value' => '',
'preview' => '',
's' => '',
'sentence' => '',
'fields' => '',
'category__in' =>
array (
),
'category__not_in' =>
array (
),
'category__and' =>
array (
),
'post__in' =>
array (
),
'post__not_in' =>
array (
),
'tag__in' =>
array (
),
'tag__not_in' =>
array (
),
'tag__and' =>
array (
),
'tag_slug__in' =>
array (
),
'tag_slug__and' =>
array (
),
'ignore_sticky_posts' => false,
'suppress_filters' => false,
'cache_results' => true,
'update_post_term_cache' => true,
'update_post_meta_cache' => true,
'post_type' => '',
'posts_per_page' => 10,
'nopaging' => false,
'comments_per_page' => '50',
'no_found_rows' => false,
'order' => 'DESC',
'orderby' => 'wp_posts.post_date DESC',
),
'tax_query' =>
WP_Tax_Query::__set_state(array(
'queries' =>
array (
),
'relation' => 'AND',
)),
'post_count' => 0,
'current_post' => -1,
'in_the_loop' => false,
'comment_count' => 0,
'current_comment' => -1,
'found_posts' => 0,
'max_num_pages' => 0,
'max_num_comment_pages' => 0,
'is_single' => false,
'is_preview' => false,
'is_page' => false,
'is_archive' => false,
'is_date' => false,
'is_year' => false,
'is_month' => false,
'is_day' => false,
'is_time' => false,
'is_author' => false,
'is_category' => false,
'is_tag' => false,
'is_tax' => false,
'is_search' => false,
'is_feed' => false,
'is_comment_feed' => false,
'is_trackback' => false,
'is_home' => false,
'is_404' => true,
'is_comments_popup' => false,
'is_paged' => false,
'is_admin' => false,
'is_attachment' => false,
'is_singular' => false,
'is_robots' => false,
'is_posts_page' => false,
'is_post_type_archive' => false,
'parsed_tax_query' => true,
'query' =>
array (
'page' => '',
'pagename' => 'store/iTunes',
),
'request' => ' SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND (wp_posts.ID = \'0\') AND wp_posts.post_type = \'page\' ORDER BY wp_posts.post_date DESC ',
'posts' =>
array (
),
'queried_object' => NULL,
'queried_object_id' => 0,
))
明白なことを見逃しているように感じますが、今は負けています。
だから私の質問は:どのように私はWPに分類アーカイブを検索させることができますか?一方のサーバーでは機能しますが、もう一方のサーバーでは機能しません。
パーマリンクは両方のサーバで/%year%/%postname%/
に設定されており、私はinit
perの書き換えルールをフラッシュしました。
$GLOBALS['wp_rewrite']->flush_rules();
@Jan Fabryから Rewrite Analyzerプラグイン を使ってステージングサーバー上。後者では、規則はありません。
store/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$ store: ([^/]+)
feed: (feed|rdf|rss|rss2|atom)
store/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ store: ([^/]+)
feed: (feed|rdf|rss|rss2|atom)
store/([^/]+)/page/?([0-9]{1,})/?$ store: ([^/]+)
paged: ([0-9]{1,})
store/([^/]+)/?$ store: ([^/]+)
本当に手動でルールを追加する必要がありますか?通常register_taxonomy()
はそれをするべきです、それはすべきではありませんか?
バー!私は回避策を使ってfunctions.phpごとに足りない書き換え規則を追加しました。
add_action( 'init', 'add_taxrules_manually' );
function add_taxrules_manually()
{
$tax = 'store';
$rewrite_rules = get_option( 'rewrite_rules' );
if ( isset ( $rewrite_rules[ $tax . '/([^/]+)/?$' ] ) )
{
return;
}
$new_rules = array (
$tax . '/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?' . $tax . '=$matches[1]&feed=$matches[2]',
$tax . '/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?' . $tax . '=$matches[1]&feed=$matches[2]',
$tax . '/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?' . $tax . '=$matches[1]&paged=$matches[2]',
$tax . '/([^/]+)/?$' => 'index.php?' . $tax . '=$matches[1]',
);
$update = array_merge( $new_rules, $rewrite_rules );
update_option( 'rewrite_rules', $update );
}
重要:新しい規則はページ規則の前にくる必要があります。 array_merge()
の引数の順序を変更しても修正されません。
ここで何が起こるのか理解するためにhaveを持っているだけなので、この質問は未解決です。
書き換えルールをフラッシュしましたか?