Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/karim-khfr/portfolio-core/archive/refs/heads/main.zipPlugin WordPress personnalisé qui fournit la logique métier du portfolio utilisé par le thème blog disponible ici : https://github.com/karim-khfr/blog
Le plugin est volontairement indépendant du thème : il enregistre les contenus, taxonomies et champs métier, tandis que le thème reste responsable de leur présentation. Il fonctionne en lien avec SCF (Secure Custom Fields).
Technologies
- WordPress
- PHP 8.x
- Gutenberg
- REST API WordPress
- SCF (Secure Custom Fields)
- Git / GitHub
Fonctionnalités
CPT Projet
Le plugin enregistre le Custom Post Type :
project
Interface WordPress :
Projet / Projets
URLs publiques :
/portfolio/
/portfolio/nom-du-projet/
Fonctionnalités supportées : titre, éditeur Gutenberg, extrait, image mise en avant, révisions et REST API.
Taxonomies
Type de projet
Identifiant interne : project_type.
Taxonomie hiérarchique, destinée à classer les projets par nature.
Exemples : Site web, Application, Expérimentation.
Technologies
Identifiant interne : project_technology.
Taxonomie non hiérarchique, destinée à associer plusieurs technologies à un projet.
Exemples : WordPress, PHP, CSS, JavaScript, Excel.
Champs SCF
Le groupe Informations du projet est enregistré par code dans inc/fields.php.
| Champ | Nom interne | Type | Obligatoire |
|---|---|---|---|
| Année | project_year |
Nombre | Non |
| Statut | project_status |
Sélection | Non |
| Rôle | project_role |
Texte | Non |
| Client / organisation | project_client |
Texte | Non |
| URL du projet | project_url |
URL | Non |
| URL du dépôt | project_repository_url |
URL | Non |
Les champs URL restent facultatifs afin de prendre en charge les projets non publiés en ligne ou sans dépôt de code public.
Structure
portfolio-core/
├── inc/
│ ├── fields.php
│ ├── post-types.php
│ └── taxonomies.php
└── portfolio-core.php
portfolio-core.php
Fichier principal du plugin. Il déclare le plugin, charge les modules et gère les hooks d'activation et de désactivation ainsi que le flush des règles de réécriture.
inc/post-types.php
Enregistrement du CPT project.
inc/taxonomies.php
Enregistrement de project_type et project_technology.
inc/fields.php
Définition locale et versionnée des champs SCF.
Réécriture des URLs
Le plugin reconstruit les règles de réécriture lors de son activation afin que les URLs du portfolio fonctionnent immédiatement.
À l'activation :
- le CPT est enregistré ;
- les taxonomies sont enregistrées ;
flush_rewrite_rules()est exécuté.
Un flush est également effectué à la désactivation. Le plugin ne déclenche pas de flush à chaque requête.
Architecture
Le plugin gère la logique métier : type de contenu Projet, taxonomies, champs SCF et règles de réécriture.
Le thème blog gère la présentation : archive-project.html, single-project.html, grille des projets, affichage des métadonnées, responsive et styles.
Cette séparation permet de changer de thème sans perdre le modèle de données du portfolio.
Développement
Workflow Git :
main
└── feature/nom-de-la-fonctionnalite
Le socle fonctionnel du plugin est terminé et fusionné dans main.
Historique fonctionnel principal :
- initialisation de la structure ;
- ajout du CPT Projet et de ses taxonomies ;
- ajout des champs SCF ;
- gestion des règles de réécriture.
Installation locale
Le plugin doit être placé dans :
wp-content/plugins/portfolio-core/
Puis activé depuis Extensions → Extensions installées → Portfolio Core.
SCF doit être installé et activé pour afficher les champs personnalisés du projet.
État actuel
Fonctionnalités validées :
- menu Projets dans l'administration ;
- création et édition de projets avec Gutenberg ;
- attribution d'un Type de projet ;
- attribution de Technologies ;
- champs SCF affichés dans l'éditeur ;
- champs facultatifs acceptés lorsqu'ils sont vides ;
- URL
/portfolio/nom-du-projet/fonctionnelle ; - règles de réécriture régénérées automatiquement après activation.
Prochaine étape
Le développement se poursuit dans le thème blog avec la Phase 7 :
archive-project.html;single-project.html;- grille et cartes Portfolio ;
- affichage conditionnel des champs SCF ;
- navigation entre projets ;
- responsive.