web-dev-qa-db-ja.com

このエラーの原因は何ですか? 「警告:引数が無効です」

この問題を解決するために緊急の支援が必要です - 私は問題なくローカルでWordPressテーマに取り組んでいます、そして今ライブサーバーにアップロードしたのでこのエラーになります。

警告:1011行目の/homepages/42/d357924500/htdocs/wp-includes/post.phpでforeach()に無効な引数が指定されています

対応するコードはregister_post_type関数に関連しています。

foreach ( $args->taxonomies as $taxonomy ) {
        register_taxonomy_for_object_type( $taxonomy, $post_type );
    }

これは私のregister_post_typeまたはregister_taxonomycode のエラーによるものでしょうか。エラーはフロントエンドと管理者側の両方に表示されます(ウィジェットを更新しようとするとウィジェットのオプションボックスにも表示されます - 変更は保存されません)。

私はまだPHPについてあまり詳しく知りません(まだ学習しています)が、いくつかのWordPressカスタマイズを管理するのに十分なことはわかっています。両方のWordPressインストールはバージョン3.1を使います。この問題についての任意の助けは非常に高く評価されています。

- アップデート -

"type"というカスタム分類の新しい用語を作成しようとしたところ、赤いエラーボックスにこのエラーが表示されました。

**警告:/homepages/42/d357924500/htdocs/wp-includes/post.phpの1011行でforeach()に無効な引数が指定されています

警告:ヘッダー情報は変更できません - /homepages/42/d357924500/htdocs/wp-の(/homepages/42/d357924500/htdocs/wp-includes/post.php:1011から開始された出力)で既に送信されているヘッダー129行目に/ class-wp-ajax-response.phpが含まれています

管理

administration0]]>管理

administration0]]> **

分類学用語は明らかに保存されませんでした。

2
Skymaiden

同じ問題に遭遇した。 @ Patriekは正しいです。 'taxonomies'引数は配列、つまり複数形でなければなりません。例えば。

$args = array( 'taxonomies' => array( 'myTaxonomy' ) );

これはエラーを修正します。

これを気づいたのは、サイトを別のサーバーに移動したときに、register_post_type()関数ではリモートホストで有効になっていないphp設定が必要だと考えるようになったためです。 register_globalsが有効になっています...この問題をサーバーに依存させるアイデアはありますか?

5
jmeho

私の考えでは、あなたのargs-> taxonomyは空、無効、あるいは存在しないのです。それ以上のコードがなければ、その理由を言うのは難しいです。 localhostから本番サーバーにすべてのコードをアップロードしましたか?.

また、分類法がregister_post_typeの後に作成されたために発生することがありますが、localhostのコードでも同じエラーが発生します。私は通常このように分類法を呼び出します。

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

変数$ args、どこから来たのですか?おそらくあなたはあなたのローカルマシン上にregister_globals_onを持っています、しかしそれはphp.iniの中のサーバー上でオフになっています。

1
petermolnar

そのため、エラーは私のカスタム分類登録によって引き起こされていました。私はそれを完全に切り取ることによってなんとか警告を消した。これで問題が解決したようですが、私は新しいregister_taxonomy(ほぼ同じコードを使用しますが、名前はPatriekで提案されているように変更されています)をしましたが、警告は返されません。

私を助けようとした人たちに感謝します。 :-)

1
Skymaiden