web-dev-qa-db-ja.com

get_post_type_archive_link( 'post')は現在のカテゴリアーカイブを返す

私は私のindex.phpページでget_post_type_archive_link('post')を使ってすべてのカテゴリーのすべての投稿のURLを取得しています。

私はフィルタでそれを使っています。使用しているすべてのカテゴリを個別にリストしました

$filter_cat=array();
$categories = get_categories();
foreach ($categories as $category_one) {
    $cat_ID = $category_one->cat_ID;
    $cat_name = $category_one->name;
    $filter_cat[] ='<a href="'.get_category_link( $cat_ID ).'" data-cat="'.$cat_ID.'">'.$cat_name.'</a>';
}
$filter_cat_out = '<li class="filter_button_category">' . implode('</li><li class="filter_button_category">', $filter_cat) . '</li>';
$filters_out = '<li class="filter_button_category filter_button_all">
                    <i class="icon-tag"></i><a href="'.get_post_type_archive_link('post').'" class="all_posts">'.esc_attr__('All', 'mytheme').'</a>
                </li>
                '.$filter_cat_out;

メインページにブログを使用し、静的ページとしてページを選択し、手動でインデックスページに移動した場合(カテゴリの1つに移動する必要がある場合)、[すべて]リンクをクリックした場合すべてのカテゴリが一覧表示されたアーカイブページではなく、常に現在のカテゴリをポイントします。

そのようなことさえ可能ですか?アーカイブページにすべてのカテゴリがリストされるページへのリンクを取得する

1
dingo_d

技術的には投稿タイプの登録時にアーカイブが登録されていないため、 get_post_type_archive_link() は投稿タイプpostへのリンクを返しません。 get_post_type_object( 'post' )の出力を調べれば、これをチェックすることができます。そのため実際にはget_post_type_archive_link( 'post' )falseを返します - source を参照してください。

別の方法で投稿のページへのリンクを取得することができます。

$permalink = get_permalink( get_option( 'page_for_posts' ) );
2
Nicolai