PHPackages                             yann-soaz/ys\_cpt - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. yann-soaz/ys\_cpt

ActiveLibrary[Framework](/categories/framework)

yann-soaz/ys\_cpt
=================

code to add custom post type to wordpress theme or plugin

116PHP

Since Jun 29Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/yann-soaz/YS_CPT)[ Packagist](https://packagist.org/packages/yann-soaz/ys_cpt)[ RSS](/packages/yann-soaz-ys-cpt/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

yann-soaz/YS\_CPT
=================

[](#yann-soazys_cpt)

Plugin permettant de générer avec aisance des types de contenu personnalisés sur wordpress

Installation
------------

[](#installation)

Installez le projet avec composer dans votre thème ou votre plugin.

```
  composer require yann-soaz/ys_cpt
```

Si ce n'est pas déjà fait, importez l'autoload :

```
  require('vendor/autoload.php');
```

Utilisation
-----------

[](#utilisation)

Appelez le manager :

```
  $cpt = YS_PostTypeManager::get();
```

### création d'un type de contenu :

[](#création-dun-type-de-contenu-)

#### basique :

[](#basique-)

```
    $cpt->addPostType('projets')
```

#### avancée :

[](#avancée-)

**générer les labels (en français) :**

```
$projets = ($cpt->addPostType('projets'))
                ->generateLabels('projet');
```

**générer des labels avec un pluriel autre que l'ajout d'un "s" en fin de mot**

```
$cadeaux = ($cpt->addPostType('cadeau'))
                ->generateLabels('cadeau', 'cadeaux');
```

**générer des labels féminins**

```
$eaux = ($cpt->addPostType('eaux'))
                ->generateLabels('eau', 'eaux', true);
```

**saisir un ou plusieurs labels manuellement :**

```
$projets = ($cpt->addPostType('eau'))
                ->setLabels([
                    'not_found' => 'aucune eau n\'a été trouvée... Bonne désidratation !',
                    'add_new' => 'Créer un nouvelle eau'
                ]);
```

*Note : Les labels remplaceront ceux générés automatiquement mais ne supprimeront pas ceux qui ne sont pas passés en argument.*

**positionner dans le menu d'admin de wordpress**

```
$cadeaux = ($cpt->addPostType('cadeau'))
                ->menuBefore('post'); // positionne avant le contenu article
```

```
$cadeaux = ($cpt->addPostType('cadeau'))
                ->menuAfter('post'); // positionne après le contenu article
```

*la liste des positions disponnibles sont : 'dashboard', 'posts', 'media', 'links', 'pages', 'comments', 'appearances', 'plugins', 'users', 'tools', 'settings'*

**changer l'icone du menu admin**

```
$cadeaux = ($cpt->addPostType('cadeau'))
                ->menuIcon('dashicons-buddicons-community');
```

*liste des icones disponnible : *

**récupérer le slug d'un CPT**

```
$cadeaux = $cpt->addPostType('cadeau');
$cadeaux->getSlug();
```

**Ajouter une ou plusieurs action à la sauvegarde d'un contenu**

```
$cadeaux = $cpt->addPostType('cadeau');
$cadeaux->getSlug();
```

**paramétrage personnalisé du type de contenu**

```
$eaux = ($cpt->addPostType('eaux'))
                ->setArgs([
                    'taxonomies' => ['categories', 'tags']
                ]);
```

les arguments de base des contenus sont :

```
    $this->args = [
      'hierarchical'        => true,
      'description'         => 'description',
      'taxonomies'          => [],
      'public'              => true,
      'show_ui'             => true,
      'show_in_menu'        => true,
      'menu_position'       => 5,
      'show_in_nav_menus'   => true,
      'publicly_queryable'  => true,
      'exclude_from_search' => false,
      'show_in_rest'        => true,
      'has_archive'         => true,
      'query_var'           => true,
      'can_export'          => true,
      'rewrite'             => true,
      'capability_type'     => 'post',
      'supports'            => [
        'title', 'editor', 'author', 'thumbnail',
        'custom-fields', 'trackbacks', 'comments',
        'revisions', 'page-attributes', 'post-formats'
      ],
    ];
```

### création d'une taxonomie :

[](#création-dune-taxonomie-)

#### basique

[](#basique)

```
    $cpt->addTaxonomy('type_projet')
```

#### avancée

[](#avancée)

**Ajouter à un type de contenu**

```
    $cadeaux = $cpt->addPostType('cadeau');

    $type_projet = $cpt->addTaxonomy('type_projet');
    $type_projet->addPostTypes('page', 'post', $cadeaux->getSlug());
```

**Retirer la hiérarchisation des termes de taxonomie**

```
    $type_projet = $cpt->addTaxonomy('type_projet');
    $type_projet->isTag();
```

**Générer les labels**La génération des labels se fait de la même mannière que pour les types de contenus

```
    $methodo = $cpt->addTaxonomy('methodo');
    $methodo->generateLabels('méthodologie', 'méthodologies', true); // singulier, pluriel, féminin (bool)
```

Personnaliser les labels

```
    $methodo = $cpt->addTaxonomy('methodo');
    $methodo->setLabels([
      'new_item_name' => 'Nom de la nouvelle méthodologie.'
    ]);
```

Labels par défaut :

```
    $this->labels = [
      'name' => $plural,
      'singular_name' => $singular,
      'search_items' =>  'rechercher des '.$plural,
      'all_items' => 'Toutes les '.$plural,
      'parent_item' => sprintf("%s %s", $singular, ( ($feminin) ? 'parente' : 'parent' ) ),
      'parent_item_colon' => sprintf("%s %s :", $singular, ( ($feminin) ? 'parente' : 'parent' ) ),
      'edit_item' => sprintf( 'Modifier %s %s.', ( ($feminin) ? 'la' : 'le' ), $singular ),
      'update_item' => sprintf( 'Mettre à jour %s %s.', ( ($feminin) ? 'la' : 'le' ), $singular ),
      'add_new_item' => sprintf("Ajouter %s %s.",( ($feminin) ? 'une nouvelle' : 'un nouveau' ), $singular),
      'new_item_name' => 'Nouveau nom de '.$singular,
      'menu_name' => $plural,
      'popular_items' => $plural.' populaires',
      'separate_items_with_commas' => 'Séparez les '.$plural.' par des virgules.',
      'add_or_remove_items' => 'Ajouter ou supprimer des '.$plural,
      'choose_from_most_used' => sprintf( 'Choisissez les %s les plus %s.', $plural, ( ($feminin) ? 'utilisées' : 'utilisés' )),
      'not_found' => sprintf( '%s %s %s.', ( ($feminin) ? 'aucunes' : 'aucun' ), $singular, ( ($feminin) ? 'Trouvée' : 'trouvé' ) ),
    ];
```

**Personnaliser la taxonomie**

```
    $methodo = $cpt->addTaxonomy('methodo');
    $methodo->setArgs([
      'show_in_rest' => false
    ]);
```

Arguments par défaut :

```
    [
      // Hierarchical taxonomy (like categories)
      'hierarchical' => true,
      'show_in_rest' => true,
      // Control the slugs used for this taxonomy
      'rewrite' => [
        'slug' => $this->slug, // This controls the base slug that will display before each term
        'hierarchical' => true // This will allow URL's like "/locations/boston/cambridge/"
      ]
    ];
```

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance39

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/b3bb0379a7c3d9985ef3a3e56c68b362c7779f44fa96f373e15c6fe49be481a3?d=identicon)[yann-soaz](/maintainers/yann-soaz)

---

Top Contributors

[![yann-soaz](https://avatars.githubusercontent.com/u/40341222?v=4)](https://github.com/yann-soaz "yann-soaz (10 commits)")

### Embed Badge

![Health badge](/badges/yann-soaz-ys-cpt/health.svg)

```
[![Health](https://phpackages.com/badges/yann-soaz-ys-cpt/health.svg)](https://phpackages.com/packages/yann-soaz-ys-cpt)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M257](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M593](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
