Il y a un problème: je veux ajouter une table 'linkmeta' pour fonctionner comme 'postmeta' ou 'commentmeta' .. et utiliser des fonctions comme add_metadata/ update_metadata /delete_metadata!
mais, dans cette fonction, appelez "_get_meta_table ()" pour vérifier le nom dans la base de données, ce code:
function _get_meta_table($type) {
global $wpdb;
$table_name = $type . 'meta';
if ( empty($wpdb->$table_name) )
return false;
return $wpdb->$table_name;
}
donc, s'il n'existe pas la propriété/var nommée 'linkmeta' dans $ wpdb, _get_meta_table
retournera false, alors update_metadata
ne fonctionnera pas non plus, car cette partie de code au début de celle-ci:
if ( ! $table = _get_meta_table($meta_type) )
return false;
mais, si je peux définir une propriété/var de (classe) $wpdb
comme $wpdb->linkmeta
, renvoyer le nom correct de la table, dans ce cas (par défaut) wp_linkmeta, tout le reste fonctionnera Nice!
oui, il y a un moyen de changer wpdb dans le runtime? si je viens de mettre les commandes:
$wpdb->tables = array_merge($wpdb->tables, array('linkmeta'));
$wpdb->linkmeta = $wpdb->prefix . 'linkmeta';
lors de l’initialisation du plugin, cela fonctionnera-t-il lorsque la fonction _get_meta_table
sera appelée ??!
rgds
Oui, il suffit de déclarer suffisamment tôt le $wpdb
global et de modifier ses champs. La documentation du Codex pour add_metadata()
dit exactement cela:
Notez que vous devrez également enregistrer la table avec l'objet $ wpdb pour que cela fonctionne. Ajoutez simplement ce qui suit au crochet d’initialisation de WordPress (ou du moins avant d’essayer d’utiliser une fonction de métadonnée personnalisée).
global $wpdb; $wpdb->termmeta = $wpdb->prefix.'termmeta';