web-dev-qa-db-fra.com

get_post_type_archive_link ('post') renvoie l'archive de la catégorie actuelle

J'utilise get_post_type_archive_link('post') sur ma page index.php pour obtenir l'URL de toutes les publications de toutes les catégories.

Je l'utilise dans un filtre. J'ai énuméré toutes les catégories séparément en utilisant

$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;

Maintenant, tout fonctionne bien, si j'utilise blog comme page principale, mais si je sélectionne une page comme page statique et que je parviens à ma page d'index manuellement (je dois aller à l'une des catégories), le lien "Toutes" pointera toujours sur la catégorie actuelle au lieu de la page d'archive avec toutes les catégories répertoriées.

Une telle chose est-elle possible? Obtenir un lien vers une page où toutes les catégories seront listées dans ma page d'archives?

1
dingo_d

get_post_type_archive_link() ne renvoie pas de lien pour le type de message post, car techniquement, il n'a pas d'archive enregistrée lors de l'enregistrement du type de message. Vous pouvez le vérifier si vous inspectez la sortie de get_post_type_object( 'post' ). Donc, en fait, get_post_type_archive_link( 'post' ) retournera false - voir source .

Vous pouvez obtenir le lien de la page pour les articles d'une autre manière:

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