Au cours d’un de mes derniers projets, j’ai été confronté à l’utilisation d’un plugin de type jobboard, WPJobBoard.

Logo WPJobBoard

Seulement voilà, la FAQ malgré ses 40 pages n’explique pas tout, surtout quand on veut customiser un peu ce que fait le plugin.

C’est assez regrettable pour un plugin premium à $97 que tout ne soit pas aussi facile que prévu, surtout dans le cadre que je vous énoncerais après – un cadre somme toute sans rien d’extraordinaire.

Un plugin un peu dépassé

Vous vous en rendrez compte si vous voulez l’utiliser et personnaliser certaines choses, le plugin est un peu obsolète.

WPJobBoard facile d'utilisation ?

Je m’entends, il fonctionne et reste facile d’utilisation mais certaines opérations sont un peu à l’ancienne ou impossibles à réaliser.

Une page pour toutes les pages

Par exemple, un shortcode [wpjobboard-jobs] est inclus sur la page qu’utilisera le plugin – s’il ne l’est pas, comme dans mon cas, indiquez-le comme seul contenu de la page.

Autrement dit, cette unique page servira de souche à toutes les autres :

  • L’index des offres d’emploi ;
  • Chaque page emploi ;
  • Les pages de catégorie d’offre d’emploi ;
  • La page de recherche…

Le problème, c’est que quand on veut utiliser bitly automatiquement, l’utilitaire s’arrête sur l’ID du post qui est celui de la page.

Idem pour tout ce qui est plugin SEO à l’instar de celui de Yoast.

SEO version WPJobBoard

Même si WPJobBoard parle d’options SEO (en l’occurrence seulement les titres des pages), on en est très loin et la meta description est impossible à paramétrer.

Pas de custom post types

A l’origine, je me disais que le plugin créait, pour chaque offre, un CPT contenant l’offre.

Et non, ce n’est pas le cas. Tout se passe en base de données.

On a donc un plugin utile, plus perfectionné que les versions précédentes (paiement PayPal natif, meilleure intégration des offres, recherche en live search…) mais qui reste sur des méthodes d’intégration peu adaptées pour WordPress.

Voilà pourquoi j’ai eu quelques problèmes à l’utiliser dans le cadre de mon client, malgré une FAQ fournie et un support très réactif.

Pas de modification du thème facile

Un autre hic du plugin est cette impossibilité de modifier l’affichage simplement.

Les possesseurs du plugin regretteront de ne pas pouvoir customiser le thème facilement.

La feuille de style du thème est donc truffée de !important pour préserver les modifications.

Il existe bien un thème dédié, Jobelon, mais c’est un thème WordPress et pas un thème pour le plugin seulement.

WPJobBoard et Jobelon

Des fonctionnalités cachées

Une autre bizarrerie de WPJobBoard est l’impossibilité de modifier les sidebars générées par le plugin, comme me l’a signalé à juste titre l’ami Patrice de https://www.sitepenalise.fr.

J’ai rapidement regretté de ne pas avoir la main sur la sidebar générée par WPJobBoard pour rajouter des éléments ou les agencer comme je l’entends.

Vous avez le choix parmi des widgets fournis de les afficher sur toutes les pages ou seulement sur les pages gérées par le plugin mais aucune possibilité de rajouter un élément.

Widgets affichables seulement sur les pages gérées par WPJobBoard

Si comme moi, la FAQ ne vous suffit pas, passons maintenant aux solutions à tous ces problèmes car oui, il y a des solutions !

Query classique

Dans la version 4.1.4 utilisée sur mon site client, je voulais faire apparaître sur la page d’accueil les dernières offres d’emploi publiées.

Comme il ne s’agit pas d’articles ou de CPT classiques, il était compliqué de faire une query basique.

Voilà la requête spécifique pour afficher les 3 dernières offres au format liste (dans une liste ul ou ol).

<? $result = wpjb_find_jobs(array('count'=>3, 'page'=>1)); // Recherche des 3 derniers jobs sur une seule page

foreach($result->job as $job) : // Pour chaque resultat

$jobImage = $job->getLogoUrl(); $jobURL = $job->url(); $jobTitle = $job->job_title; $jobCompany = $job->company_name; $jobType = $job->getTag()->type[0]->title; $jobCity = $job->job_city; // Definition de variables pour utiliser les elements URL du logo, URL de l'offre, titre de l'offre, entreprise publiant l'offre, type d'offre d'emploi, ville de l'offre ?>

    <li><? if (!empty($jobImage)) : // Affichage du logo de l'entreprise publiant l'offre s'il existe ?>
        <a href="<? echo $jobURL; ?>" title="<? echo $jobTitle . ' ' . $jobType . ' chez ' . $jobCompany; ?>">
            <img width="110" height="96" src="<? echo $jobImage; ?>" class="attachment-post-thumbnail wp-post-image" alt="<? echo $jobTitle . ' ' . $jobType . ' chez ' . $jobCompany; ?>" title="<? echo $jobTitle . ' ' . $jobType . ' chez ' . $jobCompany; ?>" /></a>
        <? endif; ?>
        <a href="<? echo $jobURL; ?>" title="<? echo $jobTitle . ' ' . $jobType . ' chez ' . $jobCompany; ?><? if (!empty($jobImage)) : echo ' (' .$jobSalary . ')'; endif ?>"><? echo $jobTitle . ' chez ' . $jobCompany; ?></a>
    </li>

<? endforeach; ?>

La requête va chercher les articles et l’utilisation des variables pour chaque détail des offres vous permettra d’utiliser les détails comme bon vous semble de manière plus rapide.

Affichage d’un Custom field

La nouveauté de la version 4 de WPJobBoard est la possibilité de rajouter, par drag and drop, des éléments à n’importe quelle page.

On peut donc rajouter une information intéressante et souvent essentielle, le salaire.

J’ai donc créé un CF spécifique :

  • Nom : salary ;
  • Label : Salary.

C’est en anglais pour rester dans la logique du plugin et faciliter la traduction.

Seulement voilà, maintenant que le CP est créé, comment faire pour l’utiliser ensuite en affichage ?

Voilà la réponse :

<? $jobSalary = $job->meta->salary->value(); ?>

Utilisez ensuite la variable où bon vous semble. Si vous changez de variable, indiquez juste à la place de salary le nom de votre Custom Field.

Forcer une sidebar sur les pages gérées par WPJobBoard

WPJobBoard génère tout seul une sidebar qui correspond à la sidebar des pages de votre site incluant les widgets WPJobBoard.

Donc, si vous utilisez des widgets WPJobBoard, ils s’afficheront dans cette sidebar. Sinon, votre sidebar sera vide.

Si vous désirez forcer une sidebar particulière, ce qui est mon cas, utilisez cette condition insérée dans le code de votre fichier page.php ou équivalent :

<? if (is_wpjb()) : dynamic_sidebar('Sidebar Jobs'); // Si c'est une page geree par WPJobBoard alors j'affiche la sidebar nommee Sidebar Jobs

else : get_sidebar(); // Sinon j'affiche la sidebar par defaut

endif; ?>

Cette condition vous permet de toucher toutes les pages gérées par le plugin.

Bien entendu, vous devez d’abord avoir déclaré une sidebar nommée Sidebar Jobs dans votre fichier functions.php.

Personnaliser la sidebar en fonction des pages affichées

A l’aide d’une suite de condition dans le fichier page.php, vous pouvez personnaliser les sidebars en fonction des pages générées par le plugin.

Ainsi, vous pouvez ajouter ou supprimer des éléments si la page affiche le listing complet des offres d’emploi, la page d’une offre ou la page recensant toutes les offres du même type.

Note : pour les plus frileux, vous pouvez utiliser un plugin comme Widget Logic qui affichera le widget en fonction de la condition que vous lui indiquez.

Les widgets seront à glisser dans la sidebar dédiée aux pages (ou la sidebar créée pour l’occasion comme indiqué précédemment) et les conditions à indiquer à la ligne Widget Logic.

WPJobBoard et Widget Logic

Afficher une sidebar sur la page d’accueil WPJobBoard

Pour ajouter une sidebar affichée seulement sur la page d’accueil WPJobBoard, ce sera ce code :

<? if (is_wpjb() && wpjb_is_routed_to("index.index")) : dynamic_sidebar('Sidebar Jobs'); // Si c'est une page geree par WPJobBoard et que c'est la page d'accueil, alors j'affiche la sidebar nommee Sidebar Jobs

else : get_sidebar(); // Sinon j'affiche la sidebar par defaut

endif; ?>

Afficher une sidebar sur la page de chaque offre d’emploi

Si vous voulez afficher une sidebar seulement sur les pages des offres, voici le code :

<? if (is_wpjb() && wpjb_is_routed_to("index.single")) : dynamic_sidebar('Sidebar Jobs Single'); // Si c'est une page geree par WPJobBoard et que c'est une page offre d'emploi, alors j'affiche la sidebar nommee Sidebar Jobs Single

else : get_sidebar(); // Sinon j'affiche la sidebar par defaut

endif; ?>

Afficher une sidebar sur la page catégorie d’offre d’emploi

Attention, quand WPJobBoard parle de catégorie, il s’agit de la catégorie d’offre stipulée par vous-même (catégorie Défaut par défaut) et non le type d’emploi (CDI, CDD, freelance…).

La condition est :

<? if (is_wpjb() && wpjb_is_routed_to("index.category")) : dynamic_sidebar('Sidebar Jobs Category'); // Si c'est une page geree par WPJobBoard et que c'est une page categorie d'offre d'emploi, alors j'affiche la sidebar nommee Sidebar Jobs Category

else : get_sidebar(); // Sinon j'affiche la sidebar par defaut

endif; ?>

Afficher une sidebar sur la page type d’offre d’emploi

Pour afficher une sidebar dans les pages de type d’offres, voici ce qu’il faut indiquer :

<? if (is_wpjb() && wpjb_is_routed_to("index.type")) : dynamic_sidebar('Sidebar Jobs Type'); // Si c'est une page geree par WPJobBoard et que c'est une page type d'offre d'emploi, alors j'affiche la sidebar nommee Sidebar Jobs Type

else : get_sidebar(); // Sinon j'affiche la sidebar par defaut

endif; ?>

Utiliser ces conditions pour afficher quelque chose

J’ai fait quelques modifications à l’intérieur du plugin.

Il fallait que j’affiche sur la page principale du plugin un message d’accueil et je voulais ajouter un message pour chaque page de type d’offre.

Pour cela, rendez-vous dans /wp-content/plugins/wpjobboard/templates/job-board pour éditer le fichier index.php et ajouter sous <div id="wpjb-main" class="wpjb-page-index"> :

<? if (wpjb_is_routed_to("index.index")) { // Message pour l'accueil WPJobBoard ?>

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin dolor metus, interdum vitae semper in, dapibus eget enim. Nullam vitae suscipit odio, ut ullamcorper elit.</p>

<? } if (wpjb_is_routed_to("index.type")) : // Message pour les pages de type d'offres ?>

    <p>Proin non mi sit amet sapien mattis dignissim. Aliquam lorem nibh, accumsan non felis ut, varius imperdiet dui. Nunc in tincidunt neque. Etiam id ligula non erat ultricies dictum vel ut diam.</p>

<? endif; ?>

Cela peut vous servir à rajouter des affichages comme bon vous semble.

Les prochaines mises à jour de WPJobBoard

Greg Winiarski, l’un des responsables du support, m’a glissé à l’oreille que la prochaine mise à jour fera la part belle aux templates.

Bonne nouvelle aussi, après cette MAJ graphique, WPJobBoard va se moderniser et, enfin, intégrer ces fameux Custom Post Types qui faciliteront grandement les choses (et le SEO) !

Next update will be refreshed job board templates, CPT are coming after this.

Vous voilà fin prêt pour utiliser WPJobBoard et toutes ses capacités comme il le faut – jusqu’à la prochaine mise à jour !