{"id":18896,"date":"2026-05-15T22:22:50","date_gmt":"2026-05-15T21:22:50","guid":{"rendered":"https:\/\/altaydagistan.com\/?p=18896"},"modified":"2026-05-20T13:12:55","modified_gmt":"2026-05-20T12:12:55","slug":"top-plugins-portfolio-grid-wordpress","status":"publish","type":"post","link":"https:\/\/altaydagistan.com\/en\/top-plugins-portfolio-grid-wordpress\/","title":{"rendered":"Top 5 WordPress portfolio grid plugins"},"content":{"rendered":"\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/aos\/2.3.4\/aos.css\" \/>\n\n<style>\n:root {\n  --bg: #0A0A12;\n  --white: #FFFFFF;\n  --gray-light: #B9B9B9;\n  --gray: #8E8E8E;\n  --gray-dark: #434343;\n  --accent: #1b998b;\n  --blue: #287CCA;\n  --red: #CD3434;\n  --border: #434343;\n  --font: 'Manrope', sans-serif;\n}\n* { box-sizing: border-box; margin: 0; padding: 0; }\n\n.art-wrap {\n  max-width: 860px;\n  margin: 0 auto;\n  padding: 60px 32px 100px;\n  font-family: var(--font);\n  color: var(--white);\n}\n\n\/* Eyebrow *\/\n.art-eyebrow {\n  font-size: 11px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.13em;\n  color: var(--accent);\n  display: block;\n  margin-bottom: 18px;\n}\n\n\/* Title *\/\n.art-title {\n  font-size: clamp(28px, 4vw, 42px);\n  font-weight: 800;\n  line-height: 1.1;\n  color: var(--white);\n  margin-bottom: 28px;\n  letter-spacing: -0.02em;\n}\n\n\/* Intro *\/\n.art-intro {\n  font-size: 16px;\n  color: var(--gray-light);\n  line-height: 1.8;\n  border-left: 3px solid var(--blue);\n  padding-left: 20px;\n  margin-bottom: 48px;\n}\n\n\/* Body paragraphs *\/\n.art-wrap p {\n  font-size: 16px;\n  color: var(--gray-light);\n  line-height: 1.8;\n  margin-bottom: 20px;\n}\n.art-wrap p:last-child { margin-bottom: 0; }\n.art-wrap strong { color: var(--white); font-weight: 700; }\n\n\/* Section H2 *\/\n.art-wrap h2 {\n  font-size: 22px;\n  font-weight: 800;\n  color: var(--white);\n  margin: 52px 0 20px;\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  line-height: 1.3;\n}\n.art-wrap h2 .icon { font-size: 22px; flex-shrink: 0; }\n\n\/* Plugin card *\/\n.plugin-card {\n  border: 1px solid var(--border);\n  border-radius: 16px;\n  padding: 32px 28px;\n  margin-bottom: 24px;\n  background: #0e0e1a;\n  position: relative;\n}\n.plugin-card-mine {\n  border-color: rgba(27,153,139,0.4);\n  background: linear-gradient(160deg, #0a1a18 0%, #0e0e1a 60%);\n}\n.plugin-header {\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  gap: 16px;\n  margin-bottom: 16px;\n  flex-wrap: wrap;\n}\n.plugin-rank {\n  font-size: 11px;\n  font-weight: 800;\n  text-transform: uppercase;\n  letter-spacing: 0.12em;\n  color: var(--gray);\n  margin-bottom: 6px;\n}\n.plugin-rank-mine { color: var(--accent); }\n.plugin-name {\n  font-size: 20px;\n  font-weight: 800;\n  color: var(--white);\n  line-height: 1.2;\n}\n.plugin-badge {\n  font-size: 10px;\n  font-weight: 800;\n  text-transform: uppercase;\n  letter-spacing: 0.1em;\n  padding: 5px 12px;\n  border-radius: 4px;\n  white-space: nowrap;\n  flex-shrink: 0;\n}\n.plugin-badge-mine { background: var(--accent); color: #fff; }\n.plugin-badge-free { background: rgba(40,124,202,0.15); color: var(--blue); border: 1px solid rgba(40,124,202,0.3); }\n.plugin-badge-premium { background: rgba(255,255,255,0.05); color: var(--gray); border: 1px solid var(--border); }\n\n.plugin-desc {\n  font-size: 15px;\n  color: var(--gray-light);\n  line-height: 1.75;\n  margin-bottom: 20px;\n}\n\n.plugin-meta {\n  display: flex;\n  gap: 24px;\n  flex-wrap: wrap;\n  font-size: 13px;\n  color: var(--gray);\n  border-top: 1px solid var(--border);\n  padding-top: 16px;\n  margin-top: 4px;\n}\n.plugin-meta span strong { color: var(--gray-light); }\n\n.plugin-pros-cons {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 16px;\n  margin-top: 16px;\n}\n.pc-col h4 {\n  font-size: 11px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.1em;\n  margin-bottom: 10px;\n}\n.pc-col-plus h4 { color: var(--accent); }\n.pc-col-minus h4 { color: var(--gray); }\n.pc-list {\n  list-style: none;\n  padding-inline-start: 0;\n  margin-block-end: 0;\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n}\n.pc-list li {\n  font-size: 13px;\n  color: var(--gray-light);\n  line-height: 1.5;\n  padding-left: 16px;\n  position: relative;\n}\n.pc-col-plus .pc-list li::before {\n  content: '';\n  position: absolute;\n  left: 0;\n  top: 6px;\n  width: 10px;\n  height: 10px;\n  background: var(--accent);\n  -webkit-mask: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'\/><\/svg>\") no-repeat center \/ contain;\n  mask: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'\/><\/svg>\") no-repeat center \/ contain;\n}\n.pc-col-minus .pc-list li::before {\n  content: '\u2013';\n  position: absolute;\n  left: 0;\n  top: 0;\n  color: var(--gray);\n  font-size: 12px;\n  font-weight: 700;\n}\n\n\/* Callout *\/\n.callout {\n  border-radius: 12px;\n  padding: 20px 24px;\n  margin: 32px 0;\n  display: flex;\n  gap: 14px;\n  align-items: flex-start;\n}\n.callout-green { background: rgba(27,153,139,0.08); border-left: 3px solid var(--accent); }\n.callout-blue  { background: rgba(40,124,202,0.08); border-left: 3px solid var(--blue); }\n.callout-amber { background: rgba(186,117,23,0.08); border-left: 3px solid #BA7517; }\n.callout-icon  { font-size: 18px; flex-shrink: 0; margin-top: 1px; }\n.callout-text  { font-size: 15px; color: var(--gray-light); line-height: 1.65; font-family: var(--font); }\n.callout-text strong { color: var(--white); }\n\n\/* Comparison table *\/\n.table-wrap { overflow-x: auto; margin: 16px 0 32px; border-radius: 16px; border: 1px solid var(--border); }\n.art-table { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 580px; }\n.art-table thead th {\n  background: #12121e;\n  padding: 12px 16px;\n  text-align: left;\n  font-size: 10px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.1em;\n  color: var(--gray);\n  border-bottom: 1px solid var(--border);\n}\n.art-table thead th:first-child { border-radius: 16px 0 0 0; }\n.art-table thead th:last-child { border-radius: 0 16px 0 0; text-align: center; }\n.art-table tbody td { padding: 12px 16px; border-bottom: 1px solid #1a1a28; color: var(--gray-light); vertical-align: middle; }\n.art-table tbody td:not(:first-child) { text-align: center; }\n.art-table tbody tr:last-child td { border-bottom: none; }\n.art-table tbody tr:hover td { background: #12121e; }\n.art-table tbody tr.tr-mine td { background: rgba(27,153,139,0.04); }\n.td-name { font-weight: 700; color: var(--white); }\n.td-yes { color: #1b998b !important; font-weight: 700; font-size: 16px; }\n.td-no  { color: #CD3434 !important; font-weight: 700; font-size: 16px; }\n.td-partial { color: #BA7517; font-size: 12px; font-weight: 600; }\n\n\/* CTA *\/\n.cta-box {\n  border: 1px solid var(--gray-dark);\n  border-radius: 20px;\n  padding: 40px;\n  text-align: center;\n  margin-top: 60px;\n  background: #0d0d18;\n}\n.cta-title { font-size: 28px; font-weight: 800; color: var(--white); margin-bottom: 10px; font-family: var(--font); }\n.cta-sub { font-size: 15px; color: var(--gray); margin-bottom: 24px; line-height: 1.6; }\n.cta-btn {\n  display: inline-block;\n  background: var(--accent);\n  color: #fff;\n  font-family: var(--font);\n  font-size: 15px;\n  font-weight: 700;\n  padding: 14px 32px;\n  border-radius: 8px;\n  text-decoration: none;\n}\n.cta-btn:hover { filter: brightness(1.1); color: #fff; }\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n  .art-wrap { padding: 40px 20px 80px; }\n  .plugin-pros-cons { grid-template-columns: 1fr; }\n  .plugin-header { flex-direction: column; gap: 10px; }\n  .plugin-meta { gap: 14px; }\n}\n@media (max-width: 500px) {\n  .art-title { font-size: 26px; }\n  .plugin-card { padding: 24px 18px; }\n  .callout { padding: 16px 18px; }\n  .cta-box { padding: 28px 20px; }\n}\n\/* Quiz *\/\n.quiz-wrap { border: 1px solid var(--border); border-radius: 16px; background: #0e0e1a; overflow: hidden; margin-top: 8px; }\n.quiz-step { display: none; padding: 32px 28px; }\n.quiz-step.quiz-active { display: block; }\n.quiz-q { font-size: 17px; font-weight: 700; color: var(--white); margin-bottom: 20px; line-height: 1.4; }\n.quiz-options { display: flex; flex-direction: column; gap: 10px; }\n.quiz-btn {\n  text-align: left; padding: 14px 18px; border: 1px solid var(--border); border-radius: 10px;\n  background: transparent; color: var(--gray-light); font-family: var(--font); font-size: 14px;\n  font-weight: 500; cursor: pointer; line-height: 1.5; transition: border-color 0.2s, background 0.2s, color 0.2s;\n  width: 100%;\n}\n.quiz-btn:hover { border-color: var(--accent); color: var(--white); background: rgba(27,153,139,0.06); }\n.quiz-result { display: none; padding: 32px 28px; }\n.quiz-result.quiz-active { display: block; }\n.quiz-result-tag { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--accent); margin-bottom: 12px; display: block; }\n.quiz-result-name { font-size: 20px; font-weight: 800; color: var(--white); margin-bottom: 12px; }\n.quiz-result-desc { font-size: 14px; color: var(--gray-light); line-height: 1.75; margin-bottom: 24px; }\n.quiz-restart { font-size: 13px; color: var(--gray); background: transparent; border: none; cursor: pointer; font-family: var(--font); text-decoration: underline; text-underline-offset: 3px; padding: 0; }\n.quiz-restart:hover { color: var(--white); }\n.quiz-progress { height: 3px; background: var(--border); }\n.quiz-progress-bar { height: 100%; background: var(--accent); transition: width 0.3s ease; }\n@media (max-width: 500px) { .quiz-step, .quiz-result { padding: 24px 18px; } }\n<\/style>\n\n<article class=\"art-wrap\">\n\n  <span class=\"art-eyebrow\" data-aos=\"fade-up\" data-aos-duration=\"300\">Plugin WordPress \u00b7 Comparatif<\/span>\n\n  <h1 class=\"art-title\" data-aos=\"fade-up\" data-aos-duration=\"300\" data-aos-delay=\"60\">Top 5 des plugins de grille portfolio pour WordPress<\/h1>\n\n  <p class=\"art-intro\" data-aos=\"fade-up\" data-aos-duration=\"300\" data-aos-delay=\"120\">Vous cherchez un plugin WordPress pour afficher vos projets en grille, avec filtrage, pagination et contr\u00f4le visuel&nbsp;? J&rsquo;ai compil\u00e9 les 5 options les plus s\u00e9rieuses du march\u00e9. Mon plugin est en premi\u00e8re position. Je vais vous expliquer pourquoi \u2014 mais d&rsquo;abord, soyons honn\u00eates sur ce que c&rsquo;est.<\/p>\n\n  <div class=\"callout callout-blue\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <span class=\"callout-icon\">\ud83d\udc4b<\/span>\n    <div class=\"callout-text\"><strong>Une pr\u00e9cision avant de commencer&nbsp;:<\/strong> le plugin en n\u00b0&nbsp;1 de ce classement, c&rsquo;est le mien. Je l&rsquo;ai d\u00e9velopp\u00e9, je le vends, et oui, je l&rsquo;ai mis en premier. Mais entendez-moi \u2014 il y a des raisons concr\u00e8tes pour lesquelles il se d\u00e9marque des autres, et je vais les exposer honn\u00eatement, y compris les limites de chaque option. Ce comparatif reste factuel.<\/div>\n  <\/div>\n\n  <h2 data-aos=\"fade-up\" data-aos-duration=\"300\"><span class=\"icon\">\ud83c\udfc6<\/span> N\u00b0&nbsp;1 \u2014 AD Pro Portfolio Grid <span style=\"font-size:13px; font-weight:500; color:var(--gray); margin-left:8px;\">(le mien)<\/span><\/h2>\n\n  <div class=\"plugin-card plugin-card-mine\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <div class=\"plugin-header\">\n      <div>\n        <div class=\"plugin-rank plugin-rank-mine\">N\u00b0&nbsp;1 \u00b7 Mon plugin<\/div>\n        <div class=\"plugin-name\">AD Pro Portfolio Grid<\/div>\n      <\/div>\n      <span class=\"plugin-badge plugin-badge-free\">Freemium<\/span>\n    <\/div>\n    <p class=\"plugin-desc\">J&rsquo;ai cr\u00e9\u00e9 ce plugin parce que je n&rsquo;ai pas trouv\u00e9 ce dont j&rsquo;avais besoin en tant que designer freelance. Les plugins existants \u00e9taient soit trop limit\u00e9s visuellement, soit d\u00e9pendants d&rsquo;un page builder, soit incapables d&rsquo;\u00e9pingler des projets sp\u00e9cifiques en haut de la grille. AD Pro Portfolio Grid r\u00e9sout ces trois probl\u00e8mes.<\/p>\n    <p class=\"plugin-desc\">La fonctionnalit\u00e9 qui le distingue vraiment&nbsp;: les <strong>projets \u00e9pingl\u00e9s<\/strong>. Vous tapez un titre dans le champ de recherche, vous s\u00e9lectionnez un projet, vous glissez-d\u00e9posez pour r\u00e9organiser. Ces projets apparaissent toujours en premier, quelle que soit la date de publication ou l&rsquo;ordre de tri. Aucun autre plugin de cette liste ne propose \u00e7a de fa\u00e7on aussi directe.<\/p>\n    <p class=\"plugin-desc\">Autre point fort&nbsp;: le <strong>filtrage AJAX avec synchronisation URL<\/strong>. Quand un visiteur filtre par cat\u00e9gorie, l&rsquo;URL se met \u00e0 jour avec <code style=\"background:#12121e; padding:2px 6px; border-radius:4px; font-size:13px; color:var(--accent);\">?ad_filter=branding<\/code>. Ce lien est partageable, m\u00e9morisable, et le navigateur g\u00e8re le retour arri\u00e8re normalement. Beaucoup de plugins font du filtrage AJAX, peu font la synchronisation URL.<\/p>\n    <div class=\"plugin-pros-cons\">\n      <div class=\"pc-col pc-col-plus\">\n        <h4>Points forts<\/h4>\n        <ul class=\"pc-list\">\n          <li>\u00c9pinglage de projets avec glisser-d\u00e9poser<\/li>\n          <li>Filtrage AJAX&nbsp;+ synchronisation URL<\/li>\n          <li>Contr\u00f4le visuel complet sans code<\/li>\n          <li>Overrides par grille ind\u00e9pendants<\/li>\n          <li>Bloc Gutenberg&nbsp;+ shortcode<\/li>\n          <li>Compatible tous types de contenu (CPT)<\/li>\n          <li>Version gratuite fonctionnelle sur WordPress.org<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"pc-col pc-col-minus\">\n        <h4>Limites honn\u00eates<\/h4>\n        <ul class=\"pc-list\">\n          <li>Pas de lightbox int\u00e9gr\u00e9e<\/li>\n          <li>Pas de layout masonry<\/li>\n          <li>Plugin r\u00e9cent, base d&rsquo;utilisateurs encore limit\u00e9e<\/li>\n          <li>Pas d&rsquo;int\u00e9gration Elementor native<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n    <div class=\"plugin-meta\">\n      <span><strong>Gratuit<\/strong> sur WordPress.org<\/span>\n      <span>Pro \u00e0 partir de <strong>$29.99\/an<\/strong><\/span>\n      <span>Styles&nbsp;: Card, Overlay, Simple<\/span>\n    <\/div>\n  <\/div>\n\n  <h2 data-aos=\"fade-up\" data-aos-duration=\"300\"><span class=\"icon\">\ud83e\udd48<\/span> N\u00b0&nbsp;2 \u2014 Visual Portfolio<\/h2>\n\n  <div class=\"plugin-card\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <div class=\"plugin-header\">\n      <div>\n        <div class=\"plugin-rank\">N\u00b0&nbsp;2<\/div>\n        <div class=\"plugin-name\">Visual Portfolio<\/div>\n      <\/div>\n      <span class=\"plugin-badge plugin-badge-free\">Freemium<\/span>\n    <\/div>\n    <p class=\"plugin-desc\">Visual Portfolio est construit sp\u00e9cifiquement pour l&rsquo;\u00e9diteur de blocs WordPress, avec une int\u00e9gration Gutenberg particuli\u00e8rement soign\u00e9e. C&rsquo;est probablement le plugin le plus polyvalent de cette liste si vous ne cherchez pas uniquement une grille&nbsp;: il g\u00e8re aussi les carousels, les sliders, les galeries masonry et les portfolios vid\u00e9o depuis YouTube ou Vimeo.<\/p>\n    <p class=\"plugin-desc\">Le filtrage AJAX est pr\u00e9sent dans la version gratuite. La synchronisation URL, elle, est absente. Pour les layouts avanc\u00e9s et les effets de survol pouss\u00e9s, il faut passer \u00e0 la version premium.<\/p>\n    <div class=\"plugin-pros-cons\">\n      <div class=\"pc-col pc-col-plus\">\n        <h4>Points forts<\/h4>\n        <ul class=\"pc-list\">\n          <li>Int\u00e9gration Gutenberg tr\u00e8s compl\u00e8te<\/li>\n          <li>Nombreux types de layouts (masonry, carousel, justified)<\/li>\n          <li>Support vid\u00e9o (YouTube, Vimeo, auto-h\u00e9berg\u00e9)<\/li>\n          <li>Lazy loading et responsive automatiques<\/li>\n          <li>Version gratuite g\u00e9n\u00e9reuse<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"pc-col pc-col-minus\">\n        <h4>Limites<\/h4>\n        <ul class=\"pc-list\">\n          <li>Pas de synchronisation URL sur le filtrage<\/li>\n          <li>Pas d&rsquo;\u00e9pinglage de projets<\/li>\n          <li>Effets de survol avanc\u00e9s en premium uniquement<\/li>\n          <li>Interface admin moins intuitive<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n    <div class=\"plugin-meta\">\n      <span><strong>Gratuit<\/strong> sur WordPress.org<\/span>\n      <span>Pro \u00e0 partir de <strong>$39\/an<\/strong><\/span>\n    <\/div>\n  <\/div>\n\n  <h2 data-aos=\"fade-up\" data-aos-duration=\"300\"><span class=\"icon\">\ud83e\udd49<\/span> N\u00b0&nbsp;3 \u2014 Essential Grid<\/h2>\n\n  <div class=\"plugin-card\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <div class=\"plugin-header\">\n      <div>\n        <div class=\"plugin-rank\">N\u00b0&nbsp;3<\/div>\n        <div class=\"plugin-name\">Essential Grid<\/div>\n      <\/div>\n      <span class=\"plugin-badge plugin-badge-premium\">Premium uniquement<\/span>\n    <\/div>\n    <p class=\"plugin-desc\">Essential Grid est un plugin de grille polyvalent, pas sp\u00e9cifiquement un plugin portfolio, mais ses fonctionnalit\u00e9s en font une option solide pour les portfolios filtrables. Son constructeur drag&nbsp;&amp;&nbsp;drop et ses templates pr\u00e9configur\u00e9s permettent de monter une grille rapidement sans code.<\/p>\n    <p class=\"plugin-desc\">Le principal frein&nbsp;: c&rsquo;est un plugin premium CodeCanyon sans version gratuite. Il s&rsquo;adresse plut\u00f4t aux d\u00e9veloppeurs ou agences qui ont d\u00e9j\u00e0 un budget plugin et qui veulent un outil \u00e9tabli avec une large base d&rsquo;utilisateurs.<\/p>\n    <div class=\"plugin-pros-cons\">\n      <div class=\"pc-col pc-col-plus\">\n        <h4>Points forts<\/h4>\n        <ul class=\"pc-list\">\n          <li>Builder visuel drag&nbsp;&amp;&nbsp;drop<\/li>\n          <li>Templates pr\u00e9configur\u00e9s nombreux<\/li>\n          <li>Compatible CPT et WooCommerce<\/li>\n          <li>Filtrage AJAX inclus<\/li>\n          <li>Base install\u00e9e importante, plugin mature<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"pc-col pc-col-minus\">\n        <h4>Limites<\/h4>\n        <ul class=\"pc-list\">\n          <li>Payant d\u00e8s le d\u00e9part ($69)<\/li>\n          <li>Pas de synchronisation URL sur les filtres<\/li>\n          <li>Pas d&rsquo;\u00e9pinglage de projets<\/li>\n          <li>Interface parfois complexe pour les d\u00e9butants<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n    <div class=\"plugin-meta\">\n      <span>Prix&nbsp;: <strong>$69<\/strong> (licence r\u00e9guli\u00e8re CodeCanyon)<\/span>\n      <span>Pas de version gratuite<\/span>\n    <\/div>\n  <\/div>\n\n  <h2 data-aos=\"fade-up\" data-aos-duration=\"300\"><span class=\"icon\">4\ufe0f\u20e3<\/span> N\u00b0&nbsp;4 \u2014 Modula<\/h2>\n\n  <div class=\"plugin-card\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <div class=\"plugin-header\">\n      <div>\n        <div class=\"plugin-rank\">N\u00b0&nbsp;4<\/div>\n        <div class=\"plugin-name\">Modula<\/div>\n      <\/div>\n      <span class=\"plugin-badge plugin-badge-free\">Freemium<\/span>\n    <\/div>\n    <p class=\"plugin-desc\">Modula se positionne sur la galerie d&rsquo;images plut\u00f4t que sur le portfolio li\u00e9 \u00e0 des types de contenu WordPress. Son constructeur de grille visuel est drag&nbsp;&amp;&nbsp;drop&nbsp;: vous glissez les images pour ajuster les dimensions individuellement, ce qui donne des layouts tr\u00e8s personnalis\u00e9s. C&rsquo;est son principal avantage sur les autres plugins de cette liste.<\/p>\n    <p class=\"plugin-desc\">En revanche, si vous voulez afficher des custom post types avec des taxonomies, de la pagination AJAX et du filtrage URL, Modula n&rsquo;est pas le bon outil. Il est fait pour les galeries d&rsquo;images, pas pour les portfolios li\u00e9s \u00e0 un workflow WordPress.<\/p>\n    <div class=\"plugin-pros-cons\">\n      <div class=\"pc-col pc-col-plus\">\n        <h4>Points forts<\/h4>\n        <ul class=\"pc-list\">\n          <li>Constructeur de grille visuel tr\u00e8s flexible<\/li>\n          <li>Tailles d&rsquo;images ajustables individuellement<\/li>\n          <li>Effets de survol vari\u00e9s<\/li>\n          <li>Lightbox int\u00e9gr\u00e9e<\/li>\n          <li>Interface simple et rapide \u00e0 prendre en main<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"pc-col pc-col-minus\">\n        <h4>Limites<\/h4>\n        <ul class=\"pc-list\">\n          <li>Fait pour les galeries, pas pour les CPT<\/li>\n          <li>Pas de filtrage taxonomique<\/li>\n          <li>Pas de synchronisation URL<\/li>\n          <li>Pas d&rsquo;\u00e9pinglage de projets<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n    <div class=\"plugin-meta\">\n      <span><strong>Gratuit<\/strong> sur WordPress.org<\/span>\n      <span>Pro \u00e0 partir de <strong>$39\/an<\/strong><\/span>\n    <\/div>\n  <\/div>\n\n  <h2 data-aos=\"fade-up\" data-aos-duration=\"300\"><span class=\"icon\">5\ufe0f\u20e3<\/span> N\u00b0&nbsp;5 \u2014 Portfolio Filter Gallery<\/h2>\n\n  <div class=\"plugin-card\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <div class=\"plugin-header\">\n      <div>\n        <div class=\"plugin-rank\">N\u00b0&nbsp;5<\/div>\n        <div class=\"plugin-name\">Portfolio Filter Gallery<\/div>\n      <\/div>\n      <span class=\"plugin-badge plugin-badge-free\">Freemium<\/span>\n    <\/div>\n    <p class=\"plugin-desc\">Portfolio Filter Gallery se concentre sur le filtrage. Il va plus loin que la plupart des autres plugins sur cet aspect sp\u00e9cifique, avec des filtres multiples, une barre de recherche et une num\u00e9rotation automatique des items. Si le filtrage est votre priorit\u00e9 absolue et que vos besoins en personnalisation visuelle sont limit\u00e9s, c&rsquo;est une option \u00e0 consid\u00e9rer.<\/p>\n    <p class=\"plugin-desc\">La version gratuite est limit\u00e9e aux images. La vid\u00e9o, les CPT et les layouts masonry avanc\u00e9s n\u00e9cessitent la version premium. L&rsquo;interface admin est fonctionnelle mais dat\u00e9e.<\/p>\n    <div class=\"plugin-pros-cons\">\n      <div class=\"pc-col pc-col-plus\">\n        <h4>Points forts<\/h4>\n        <ul class=\"pc-list\">\n          <li>Filtres multiples simultan\u00e9s<\/li>\n          <li>Barre de recherche int\u00e9gr\u00e9e<\/li>\n          <li>Layouts grid et masonry<\/li>\n          <li>Gratuit pour les usages basiques<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"pc-col pc-col-minus\">\n        <h4>Limites<\/h4>\n        <ul class=\"pc-list\">\n          <li>Version gratuite limit\u00e9e aux images<\/li>\n          <li>Pas de synchronisation URL<\/li>\n          <li>Pas d&rsquo;\u00e9pinglage de projets<\/li>\n          <li>Contr\u00f4le visuel limit\u00e9 sans&nbsp;CSS<\/li>\n          <li>Interface admin vieillissante<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n    <div class=\"plugin-meta\">\n      <span><strong>Gratuit<\/strong> sur WordPress.org<\/span>\n      <span>Pro \u00e0 partir de <strong>$29<\/strong><\/span>\n    <\/div>\n  <\/div>\n\n  <h2 data-aos=\"fade-up\" data-aos-duration=\"300\"><span class=\"icon\">\ud83d\udcca<\/span> Comparatif rapide<\/h2>\n\n  <div class=\"table-wrap\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <table class=\"art-table\">\n      <thead>\n        <tr>\n          <th>Plugin<\/th>\n          <th>Filtrage AJAX<\/th>\n          <th>URL sync<\/th>\n          <th>\u00c9pinglage<\/th>\n          <th>CPT support<\/th>\n          <th>Gratuit<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody>\n        <tr class=\"tr-mine\">\n          <td class=\"td-name\">AD Pro Portfolio Grid<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n        <\/tr>\n        <tr>\n          <td class=\"td-name\">Visual Portfolio<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n        <\/tr>\n        <tr>\n          <td class=\"td-name\">Essential Grid<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n        <\/tr>\n        <tr>\n          <td class=\"td-name\">Modula<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n        <\/tr>\n        <tr>\n          <td class=\"td-name\">Portfolio Filter Gallery<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-no\">\u2717<\/td>\n          <td class=\"td-partial\">Partiel<\/td>\n          <td class=\"td-yes\">\u2713<\/td>\n        <\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n\n  <div class=\"callout callout-blue\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <span class=\"callout-icon\">\ud83d\udca1<\/span>\n    <div class=\"callout-text\"><strong>Pour r\u00e9sumer&nbsp;:<\/strong> si vous voulez un plugin de galerie d&rsquo;images simple et beau, Modula est un bon choix. Si vous avez besoin de layouts tr\u00e8s vari\u00e9s (masonry, carousel, vid\u00e9o), Visual Portfolio est le plus complet. Si votre priorit\u00e9 est de contr\u00f4ler exactement quels projets apparaissent en premier, de partager des vues filtr\u00e9es via URL, et d&rsquo;avoir un contr\u00f4le visuel complet sans code, AD Pro Portfolio Grid est le seul plugin de cette liste qui coche toutes ces cases.<\/div>\n  <\/div>\n\n  <h2 data-aos=\"fade-up\" data-aos-duration=\"300\"><span class=\"icon\">\ud83e\udd14<\/span> Quel plugin est fait pour vous&nbsp;?<\/h2>\n\n  <div class=\"quiz-wrap\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <div class=\"quiz-progress\"><div class=\"quiz-progress-bar\" id=\"quizBar\" style=\"width:0%\"><\/div><\/div>\n\n    <!-- Q1 -->\n    <div class=\"quiz-step quiz-active\" id=\"qStep1\">\n      <p class=\"quiz-q\">Qu&rsquo;est-ce que vous voulez afficher dans votre grille&nbsp;?<\/p>\n      <div class=\"quiz-options\">\n        <button class=\"quiz-btn\" onclick=\"quizAnswer('cpt')\">Des projets WordPress (custom post type, pages, articles)<\/button>\n        <button class=\"quiz-btn\" onclick=\"quizAnswer('images')\">Uniquement des images ou photos upload\u00e9es<\/button>\n        <button class=\"quiz-btn\" onclick=\"quizAnswer('mixed')\">Un mix de m\u00e9dias&nbsp;: images, vid\u00e9os YouTube\/Vimeo, projets<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Q2a \u2014 CPT path -->\n    <div class=\"quiz-step\" id=\"qStep2a\">\n      <p class=\"quiz-q\">Le filtrage par cat\u00e9gorie est-il important pour votre portfolio&nbsp;?<\/p>\n      <div class=\"quiz-options\">\n        <button class=\"quiz-btn\" onclick=\"quizAnswer('filter-yes')\">Oui, les visiteurs doivent pouvoir filtrer par type de projet<\/button>\n        <button class=\"quiz-btn\" onclick=\"quizAnswer('filter-no')\">Non, une grille simple suffit<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Q2b \u2014 Images path -->\n    <div class=\"quiz-step\" id=\"qStep2b\">\n      <p class=\"quiz-q\">Avez-vous besoin de contr\u00f4ler visuellement la mise en page (dimensions par image, layouts sur mesure)&nbsp;?<\/p>\n      <div class=\"quiz-options\">\n        <button class=\"quiz-btn\" onclick=\"quizResult('modula')\">Oui, je veux ajuster chaque image individuellement<\/button>\n        <button class=\"quiz-btn\" onclick=\"quizResult('adpro')\">Non, une grille uniforme propre me suffit<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Q3 \u2014 Filter yes -->\n    <div class=\"quiz-step\" id=\"qStep3\">\n      <p class=\"quiz-q\">Avez-vous besoin de partager des liens vers des vues filtr\u00e9es (ex&nbsp;: envoyer un lien \u00ab\u00a0Branding uniquement\u00a0\u00bb \u00e0 un client)&nbsp;?<\/p>\n      <div class=\"quiz-options\">\n        <button class=\"quiz-btn\" onclick=\"quizResult('adpro')\">Oui, les URLs filtr\u00e9es sont utiles pour moi<\/button>\n        <button class=\"quiz-btn\" onclick=\"quizAnswer('nourl')\">Non, le filtrage visuellement suffit<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Q4 \u2014 No URL -->\n    <div class=\"quiz-step\" id=\"qStep4\">\n      <p class=\"quiz-q\">Quel est votre budget&nbsp;?<\/p>\n      <div class=\"quiz-options\">\n        <button class=\"quiz-btn\" onclick=\"quizResult('adpro')\">Je veux commencer gratuitement, payer si j&rsquo;ai besoin de plus<\/button>\n        <button class=\"quiz-btn\" onclick=\"quizResult('essential')\">Je pr\u00e9f\u00e8re payer directement pour un plugin \u00e9tabli et mature<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Results -->\n    <div class=\"quiz-result\" id=\"qResultAdpro\">\n      <span class=\"quiz-result-tag\">Notre recommandation<\/span>\n      <p class=\"quiz-result-name\">AD Pro Portfolio Grid<\/p>\n      <p class=\"quiz-result-desc\">Votre cas d&rsquo;usage correspond exactement \u00e0 ce pour quoi ce plugin a \u00e9t\u00e9 con\u00e7u&nbsp;: afficher des projets WordPress avec filtrage AJAX, synchronisation URL, et contr\u00f4le visuel complet. La version gratuite couvre l&rsquo;essentiel, le plan Pro d\u00e9bloque le filtrage et les overrides par grille.<\/p>\n      <a href=\"https:\/\/altaydagistan.com\/ad-pro-portfolio-grid\/\" style=\"display:inline-block; background:var(--accent); color:#fff; font-family:var(--font); font-size:14px; font-weight:700; padding:12px 24px; border-radius:8px; text-decoration:none; margin-bottom:16px;\">Voir le plugin<\/a><br>\n      <button class=\"quiz-restart\" onclick=\"quizRestart()\">Recommencer le quiz<\/button>\n    <\/div>\n\n    <div class=\"quiz-result\" id=\"qResultModula\">\n      <span class=\"quiz-result-tag\">Notre recommandation<\/span>\n      <p class=\"quiz-result-name\">Modula<\/p>\n      <p class=\"quiz-result-desc\">Pour une galerie d&rsquo;images avec layouts sur mesure et ajustement visuel par image, Modula est le plus adapt\u00e9. Son constructeur drag&nbsp;&amp;&nbsp;drop est simple \u00e0 prendre en main et le r\u00e9sultat est propre sans toucher \u00e0 du CSS.<\/p>\n      <button class=\"quiz-restart\" onclick=\"quizRestart()\">Recommencer le quiz<\/button>\n    <\/div>\n\n    <div class=\"quiz-result\" id=\"qResultVisual\">\n      <span class=\"quiz-result-tag\">Notre recommandation<\/span>\n      <p class=\"quiz-result-name\">Visual Portfolio<\/p>\n      <p class=\"quiz-result-desc\">Pour un mix de m\u00e9dias (images, vid\u00e9os YouTube, Vimeo, projets custom) avec des layouts vari\u00e9s (masonry, carousel, justified), Visual Portfolio est le plus polyvalent. La version gratuite est g\u00e9n\u00e9reuse et l&rsquo;int\u00e9gration Gutenberg est excellente.<\/p>\n      <button class=\"quiz-restart\" onclick=\"quizRestart()\">Recommencer le quiz<\/button>\n    <\/div>\n\n    <div class=\"quiz-result\" id=\"qResultEssential\">\n      <span class=\"quiz-result-tag\">Notre recommandation<\/span>\n      <p class=\"quiz-result-name\">Essential Grid<\/p>\n      <p class=\"quiz-result-desc\">Si vous cherchez un plugin payant \u00e9tabli avec des ann\u00e9es d&rsquo;existence, une documentation fournie et une large communaut\u00e9, Essential Grid est un choix solide. Comptez $69 pour la licence r\u00e9guli\u00e8re sur CodeCanyon.<\/p>\n      <button class=\"quiz-restart\" onclick=\"quizRestart()\">Recommencer le quiz<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"cta-box\" data-aos=\"fade-up\" data-aos-duration=\"300\">\n    <p class=\"cta-title\">Tester AD Pro Portfolio Grid<\/p>\n    <p class=\"cta-sub\">La version gratuite est disponible sur WordPress.org. Filtrage AJAX, pagination, tous les types de contenu. Pas de carte bancaire n\u00e9cessaire.<\/p>\n    <a href=\"https:\/\/altaydagistan.com\/ad-pro-portfolio-grid\/\" class=\"cta-btn\">Voir le plugin<\/a>\n  <\/div>\n\n<\/article>\n\n<script>\n\/\/ Quiz logic\nvar quizSteps = {\n  'cpt':        'qStep2a',\n  'images':     'qStep2b',\n  'filter-yes': 'qStep3',\n  'filter-no':  'qStep2b',\n  'nourl':      'qStep4'\n};\n\nfunction quizShowStep(id) {\n  var all = document.querySelectorAll('.quiz-step, .quiz-result');\n  for (var i = 0; i < all.length; i++) { all[i].classList.remove('quiz-active'); }\n  var el = document.getElementById(id);\n  if (el) { el.classList.add('quiz-active'); }\n}\n\nfunction quizSetProgress(pct) {\n  var bar = document.getElementById('quizBar');\n  if (bar) { bar.style.width = pct + '%'; }\n}\n\nfunction quizAnswer(val) {\n  if (val === 'mixed') { quizSetProgress(100); quizShowStep('qResultVisual'); return; }\n  var next = quizSteps[val];\n  if (next) {\n    var progressMap = { 'qStep2a': 33, 'qStep2b': 33, 'qStep3': 66, 'qStep4': 66 };\n    quizSetProgress(progressMap[next] || 50);\n    quizShowStep(next);\n  }\n}\n\nfunction quizResult(plugin) {\n  quizSetProgress(100);\n  var map = { 'adpro': 'qResultAdpro', 'modula': 'qResultModula', 'visual': 'qResultVisual', 'essential': 'qResultEssential' };\n  quizShowStep(map[plugin] || 'qResultAdpro');\n}\n\nfunction quizRestart() {\n  quizSetProgress(0);\n  quizShowStep('qStep1');\n}\n<\/script>\n\n<script>\n(function() {\n  function rescue() { return; }\n  function initAOS() {\n    if (typeof AOS !== 'undefined') {\n      AOS.init({ once: true, offset: 50, duration: 300 });\n    } else { rescue(); }\n  }\n  var s = document.createElement('script');\n  s.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/aos\/2.3.4\/aos.js';\n  s.onload = initAOS;\n  s.onerror = rescue;\n  document.body.appendChild(s);\n  setTimeout(function() {\n    if (!document.querySelector('.aos-animate')) { rescue(); }\n  }, 3000);\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Plugin WordPress \u00b7 Comparatif Top 5 des plugins de grille portfolio pour WordPress Vous cherchez un plugin WordPress pour afficher vos projets en grille, avec filtrage, pagination et contr\u00f4le visuel&nbsp;? J&rsquo;ai compil\u00e9 les 5 options les plus s\u00e9rieuses du march\u00e9. Mon plugin est en premi\u00e8re position. Je vais vous expliquer pourquoi \u2014 mais d&rsquo;abord, soyons [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":18900,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_gspb_post_css":"","footnotes":""},"categories":[155,153,194],"tags":[],"class_list":["post-18896","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-graphisme","category-graphic-design-mockups","category-plugins-wordpress"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/posts\/18896","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/comments?post=18896"}],"version-history":[{"count":4,"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/posts\/18896\/revisions"}],"predecessor-version":[{"id":18901,"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/posts\/18896\/revisions\/18901"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/media\/18900"}],"wp:attachment":[{"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/media?parent=18896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/categories?post=18896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/altaydagistan.com\/en\/wp-json\/wp\/v2\/tags?post=18896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}