Ces derniers jours, j'ai travaillé sur un plug-in qui ajoute la fonctionnalité permettant de conserver les scores d'un jeu de paintball. Lorsque j'arrive à le terminer, je souhaite présenter aux joueurs un formulaire leur permettant d'ajouter des éléments tels que: tirs, morts, victoires, défaites, lieu, rôle et date.
Cela va à une table personnalisée dans la base de données WP.
Ils obtiendront également une page de profil qui affiche les 5 derniers enregistrements, le ratio gagnant/perdant et les goûts similaires.
L'administrateur a également un menu qui affiche cette table et devrait pouvoir manipuler la date (en cas d'abus).
J'ai plus loin avec le plugin alors je pensais. L'écran d'administration est présent et charge les informations de la table (tri de certaines colonnes). Mais je n'ai pas encore la fonctionnalité d'édition ou de suppression pour fonctionner.
Ce qui m'a fait réfléchir. J'ai déjà travaillé avec des types de publication personnalisés. Ne sera-t-il pas plus facile de transformer ce plug-in en un type de publication personnalisé? Les utilisateurs peuvent-ils lui envoyer des données depuis le serveur? Puis-je interroger les données et faire quelques calculs simples avec? Les administrateurs peuvent modifier les données assez facilement avec un type d'article personnalisé si je ne me trompe pas.
Seuls les inconvénients auxquels je peux penser maintenant sont les problèmes de thème. Je pense qu'il est plus facile d'afficher les données de la table personnalisée avec un plug-in via des codes abrégés, puis d'intégrer des posts personnalisés dans un thème?
Puis-je créer des codes courts pour le type de message personnalisé?
Alors, devrais-je laisser tomber le plug-in et opter pour un type de publication personnalisé? J'aimerais pouvoir éventuellement partager ce plug-in. Par conséquent, si j'utilise le type personnalisé, je finirai probablement par créer un plug-in qui active le type personnalisé.
Les tables posts
et post_meta
sont conçues pour des articles de blog classiques et un contenu similaire. Regardez le schéma et demandez-vous: est-ce que j'ai besoin de ces champs?
CREATE TABLE $wpdb->posts (
ID bigint(20) unsigned NOT NULL auto_increment,
post_author bigint(20) unsigned NOT NULL default '0',
post_date datetime NOT NULL default '0000-00-00 00:00:00',
post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00',
post_content longtext NOT NULL,
post_title text NOT NULL,
post_excerpt text NOT NULL,
post_status varchar(20) NOT NULL default 'publish',
comment_status varchar(20) NOT NULL default 'open',
ping_status varchar(20) NOT NULL default 'open',
post_password varchar(20) NOT NULL default '',
post_name varchar(200) NOT NULL default '',
to_ping text NOT NULL,
pinged text NOT NULL,
post_modified datetime NOT NULL default '0000-00-00 00:00:00',
post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00',
post_content_filtered longtext NOT NULL,
post_parent bigint(20) unsigned NOT NULL default '0',
guid varchar(255) NOT NULL default '',
menu_order int(11) NOT NULL default '0',
post_type varchar(20) NOT NULL default 'post',
post_mime_type varchar(100) NOT NULL default '',
comment_count bigint(20) NOT NULL default '0',
PRIMARY KEY (ID),
KEY post_name (post_name),
KEY type_status_date (post_type,post_status,post_date,ID),
KEY post_parent (post_parent),
KEY post_author (post_author)
)
La création d'un formulaire personnalisé pour votre table personnalisée est presque identique au processus de création d'un formulaire pour un type de publication personnalisé. Mais dans votre propre table, vous pouvez utiliser uniquement les champs dont vous avez besoin, vous pouvez même utiliser un autre moteur de base de données et PDO si vous le souhaitez.
De plus, les types de publication personnalisés ne fonctionnent pas sur un réseau multi-sites, ils peuvent être affectés par des plugins mal écrits (certains activent leurs métaboxes ou taxonomies pour tous les types de publication publics).
Les tables que vous utilisez doivent correspondre à votre modèle de données, et non l'inverse.