Usando funcionalidade de plugin no script php externo não funciona

Estou encontrando um problema estranho que não consegui resolver até agora.

Estou chamando um script .php via cronjob (Debian / GNU Linux). Para usar wordpress functionailty adicionei:

define('WP_USE_THEMES', false); require( '/full/path/to/wp-blog-header.php' ); 

Agora, as consultas de database e a funcionalidade padrão de wordpress funcionam bem, mas também chamo algumas funções fornecidas por um plugin (ou seja, campos personalizados avançados, o problema, no entanto, afeta outros plugins e testei), o seguinte erro de php é retornado:

 PHP Fatal error: Call to undefined function update_field() in executed.php on line 24 

O que me diz que a function desse plugin não foi incluída. Então, parece-me que exigem wp-blog-header.php não inclui funcionalidade de plugin (o que fez quando eu comecei a desenvolver o script mencionado, mas agora, quando o testei, produziu um erro php que).

Poderia ser, que a atualização 3.5 do wordpress mudou alguma coisa aqui? Ou qualquer um de vocês tem algum conselho para mim sobre o porquê desse problema? Obrigado!

editar

Eu fiz mais testes. O problema parece ser que estou executando o php no shell usando o seguinte comando:

 /usr/bin/php5 -q -d memory_limit=256M /path/to/executed.php 

Assim, certas variables ​​não são definidas como $_SERVER['REQUEST_METHOD'] WordPress, portanto, me daria avisos em modo de debugging. Então, o que eu fiz é que eu defini a variável DOCUMENT_ROOT e incluí meu function.php (que não estava carregado) manualmente:

 $_SERVER['DOCUMENT_ROOT'] = '/full/path/to/my/document/root/'; define('WP_USE_THEMES', false); require( '/full/path/to/wp-blog-header.php' ); require_once( '/full/path/to/themes/mytheme/functions.php' ); 

Agora está funcionando. No entanto, parece-me como uma mera caminhada insalubre …

Solutions Collecting From Web of "Usando funcionalidade de plugin no script php externo não funciona"

Você provavelmente está chamando a function antes que ela seja definida – por que não se conectar a ela?

Algo como:

 function someFunction() { require( '/full/path/to/wp-blog-header.php' ); } add_action('some_hook', 'someFunction'); 

Nota : Você pode tentar o plugins_loaded hook.

Não tenho certeza se esta solução funcionará, mas tente require_once no momento, o arquivo principal do PHP do Plugin no seu arquivo PHP do cron-job ou simplesmente recrie a funcionalidade desse plugin no seu próprio PHP para obter as tarefas desse Plugin.

O WordPress deve ser executado a partir de um servidor web e não de uma linha de comando. Embora não seja óbvio que tipo de dependência pode ter causado esses comportamentos, essas dependencies existem e se você deseja “executar” wordpress a partir da linha de comando, você precisa simular o ambiente do servidor web, algo que o wp-cli provavelmente dose e A integração com ele pode ter servido você melhor do que tentar invocar o WordPress sozinho.