> For the complete documentation index, see [llms.txt](https://akyos.gitbook.io/book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://akyos.gitbook.io/book/wordpress/guides/creer-une-archive.md).

# Créer une archive

### Introduction

Les archives dans Wordpress sont les pages vous permettant de visualiser une "archive" de tout les post types existants du post type en question. Un post type est donc relié à la fois à une archive (voir tout les post types), et à une single (voir un post type en particulier).

### Nomenclature de nommage

Les fichier des archives devront être placés dans `views/partials/content-archive-{post_type}.blade.php`

Exemple :

```
views
├── partials
│ └── content-archive-{post_type}.blade.php
└─ index.blade.php
```

### Traitement des données

Comme vu dans [Blade](https://akyos.gitbook.io/untitled/html/moteurs-de-template/blade), il est important de ne pas mêler logique et affichage, en effet notre single va donc seulement gérer l'affichage de ces données et non son traitement. Pour gérer le traitement de nos données, nous allons donc utiliser un [Composer](https://akyos.gitbook.io/untitled/php/wordpress-sage/composers).

Exemple :

```php
class ArchiveArticle extends Composer
{

    protected static $views = [
        'partials.content-archive-article',
    ];

    public function override()
    {
        $articles = QueryBuilder::make("articles")
                        ->limit(12)
                        ->get();
        return [
	    "articles" => $articles;
        ];
    }
}
```

> Ici, on utilise une classe personnalisé `QueryBuilder` permettant de faire des [WP\_Query](https://developer.wordpress.org/reference/classes/wp_query/) en utilisant une approche orienté objet. On récupère ici 12 `WP_Post` de type `"articles"`

Une fois fait, si on se rend dans notre fichier `partials.content-archive-article`, on aura accès à la variable `$articles`. Dans notre cas, `$articles` est une [Collection](https://laravel.com/docs/9.x/collections) de [WP\_Post](https://developer.wordpress.org/reference/classes/wp_post/).

### Exemple d'archive

Après avoir récupérer les donnés nécessaires à la réalisation de notre archive, on va donc pouvoir réaliser notre vue

Exemple basique d'une archive :

```html
<section class="archive-articles">
@foreach($articles as $article)
<article class="post-card">
  <a href="{{ $article->link }}">
    <div class="image-wrapper">
      @thumbnail($article, "full")
    </div>
    <div class="content">
      <p class="title">
        {{ $article->title }}
      </p>
      <p class="excerpt">
        {{ $article->excerpt }}
      </p>
    </div>
  </a>
</article>
@endforeach
</section>
```

Ici, on créer simplement un wrapper `<section>` pour nos articles, puis on boucle sur notre Collection d'articles `$articles`, enfin, on affiche les données de chaque articles.
