J'ai besoin d'une aide urgente pour résoudre ce problème, s'il vous plaît. J'ai travaillé sur un thème WordPress localement sans problème et, maintenant que je l'ai téléchargé sur le serveur Live, l'erreur suivante s'affiche:
Avertissement: argument non valide fourni pour foreach () dans /homepages/42/d357924500/htdocs/wp-includes/post.php à la ligne 1011
Le code correspondant est lié à la fonction register_post_type
:
foreach ( $args->taxonomies as $taxonomy ) {
register_taxonomy_for_object_type( $taxonomy, $post_type );
}
Cela est-il dû à une erreur dans mon register_post_type
ou register_taxonomy
code ? L'erreur indique à la fois du côté frontal et du côté administrateur (s'affiche également dans les zones d'options des widgets lorsque j'essaie de mettre à jour des widgets - les modifications n'enregistrent pas).
Je ne connais pas encore beaucoup de PHP (j'apprends toujours), mais j'en sais juste assez pour gérer quelques personnalisations WordPress. Les deux installations WordPress utilisent la version 3.1. Toute aide sur cette question est très appréciée.
-- METTRE À JOUR --
J'ai essayé de créer un nouveau terme pour ma taxonomie personnalisée de "type", et j'ai eu cette erreur dans une boîte d'erreur rouge:
** Avertissement: argument non valide fourni pour foreach () dans /homepages/42/d357924500/htdocs/wp-includes/post.php à la ligne 1011
Avertissement: impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par (sortie démarrée à /homepages/42/d357924500/htdocs/wp-includes/post.php:1011) dans/homepages/42/d357924500/htdocs/wp- includes/class-wp-ajax-response.php à la ligne 129
Administration
administration0]]> Administration
administration0]]> **
Le terme de taxonomie n'était évidemment pas sauvegardé.
Couru dans le même problème. @Patriek est correct. L'argument "taxonomies" doit être un tableau, donc le pluriel. Par exemple.
$args = array( 'taxonomies' => array( 'myTaxonomy' ) );
Cela corrige l'erreur.
Je ne l'ai remarqué que lors du déplacement d'un site sur un autre serveur, ce qui me conduit à penser que la fonction register_post_type () nécessite des paramètres php non activés sur l'hôte distant. register_globals est activé ... des idées qui rendent ce serveur dépendant?
Mon hypothèse serait que votre argument-> taxonomie est vide, invalide ou inexistant. sans plus de code, il est difficile de dire pourquoi. Avez-vous téléchargé tout le code de votre hôte local sur le serveur de production?.
Cela se produit parfois aussi parce que la taxonomie est créée après le type_register_post_, mais que le code localhost génère la même erreur. J'appelle habituellement les taxonomes comme celui-ci.
function initialize_taxonomy() {
register_taxonomy( 'tax_name', 'tax_object', array(
'hierarchical' => false,
'query_var' => false,
'rewrite' => true,
'public' => true,
'show_ui' => true,
) );
}
add_action( 'init', 'initialize_taxonomy', 0 );
La variable $ args, d'où vient-elle? Vous avez peut-être register_globals_on sur votre ordinateur local, mais il est désactivé sur le serveur dans le fichier php.ini.
Donc, l'erreur était causée par mon enregistrement de taxonomie personnalisé. J'ai réussi à faire disparaître l'avertissement en le coupant complètement. Voyant que cela semblait résoudre le problème, j'ai créé un nouveau register_taxonomy
(en utilisant presque exactement le même code, mais avec le nom modifié comme suggéré par Patriek), et l'avertissement n'est pas revenu.
Un grand merci à ceux qui ont essayé de m'aider. :-)