O que está causando esse erro? "Aviso: argumento inválido"

2

Eu preciso de ajuda urgente para descobrir isso por favor - Eu tenho trabalhado em um tema WordPress localmente sem problemas, e agora que eu fiz o upload para o servidor ao vivo, estou recebendo este erro:

  

Aviso: argumento inválido fornecido para foreach () em   /homepages/42/d357924500/htdocs/wp-includes/post.php   na linha 1011

O código correspondente está relacionado à função register_post_type :

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

Isso pode ser devido a um erro no meu register_post_type ou register_taxonomy código ? O erro mostra tanto no front-end e no lado do administrador (também exibe em caixas de opção de widget quando eu tento atualizar widgets - as alterações não salvam).

Eu ainda não sei muito sobre PHP (ainda estou aprendendo), mas sei o suficiente para gerenciar algumas personalizações do WordPress. Ambas as instalações do WordPress usam a versão 3.1. Qualquer ajuda sobre esta questão é muito apreciada.

- ATUALIZAÇÃO -

Eu tentei criar um novo termo para minha taxonomia personalizada de "type" e recebi esse erro em uma caixa de erro vermelha:

  

* * Aviso: argumento inválido fornecido para foreach () em   /homepages/42/d357924500/htdocs/wp-includes/post.php   na linha 1011

     

Aviso: não é possível modificar as informações do cabeçalho - cabeçalhos já enviados por   (saída iniciada em   /homepages/42/d357924500/htdocs/wp-includes/post.php:1011)   em   /homepages/42/d357924500/htdocs/wp-includes/class-wp-ajax-response.php   na linha 129

     

Administração

     

administration0]] > Administração

     

administration0]] > **

O termo de taxonomia obviamente não foi salvo.

    
por Skymaiden 28.03.2011 / 11:14

4 respostas

5

Correu para o mesmo problema. @Patriek está correto. O argumento das taxonomias deve ser um array, daí o plural. Por exemplo.

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

Isso corrige o erro.

Eu só notei isso quando movo um site para outro servidor, o que me leva a pensar que a função register_post_type () requer algumas configurações do php não habilitadas no host remoto. register_globals está habilitado ... alguma idéia de como esse servidor de problemas depende?

    
por jmeho 01.04.2011 / 00:39
2

Suponho que sua taxonomia args- > seja vazia, inválida ou inexistente. sem mais código, é difícil dizer por quê. Você fez o upload de todo o código do seu host local para o servidor de produção.

Além disso, às vezes isso acontece porque a taxonomia é criada após o register_post_type, mas, em seguida, o código localhost daria o mesmo erro. Eu costumo chamar taxonomos assim.

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 );
    
por Patriek 28.03.2011 / 11:25
1

A variável $ args, de onde vem? Talvez você tenha register_globals_on em sua máquina local, mas está desligado no servidor no php.ini.

    
por petermolnar 28.03.2011 / 11:25
1

Portanto, o erro estava sendo causado pelo meu registro de taxonomia personalizada. Consegui fazer o aviso desaparecer cortando-o completamente. Ao ver que isso parecia resolver o problema, eu fiz um novo register_taxonomy (usando quase exatamente o mesmo código, mas com o nome alterado conforme sugerido por Patriek), e o aviso não voltou.

Um grande obrigado para aqueles que tentaram me ajudar. : -)

    
por Skymaiden 28.03.2011 / 13:44