web-dev-qa-db-fra.com

Qu'est ce qui cause cette erreur? "Attention: argument invalide"

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_taxonomycode ? 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é.

2
Skymaiden

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?

5
jmeho

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 );
2
Patriek

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.

1
petermolnar

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. :-)

1
Skymaiden