Estou tentando criar uma API REST para o meu site wordpress, que é usado para listar instalações usando o plugin do gerenciador de tarefas wordpress.
Registrei minha postagem personalizada, taxonomias em \ plugins \ rest-api \ plugin.php.
A API abaixo fornece todas as listagens com resposta padrão.
http: // localhost / sports / wp-json / wp / v2 / joblisting /
Eu queria adicionar uma meta meta na resposta JSON usando o código abaixo.
function slug_register_phone_number() {
register_rest_field( 'job_listing',
'phone',
array(
'get_callback' => 'slug_get_phone_number',
'update_callback' => null,
'schema' => null,
)
);
}
function slug_get_phone_number($post, $field_name, $request) {
return get_post_meta($post->id, '_phone' );
}
}
Usando o código acima, sou capaz de adicionar "telefone" como uma resposta REST, mas estou sempre recebendo telefone = falso em resposta. Não está mostrando os dados corretos da tabela wp_postmeta.
Eu segui os links mencionados abaixo para referência.
http://v2.wp-api.org/extending/modifying/
Conecte os detalhes. 1. Gerenciador de tarefas WP 2. rest-api
Qualquer ajuda será realmente útil.
fonte
Respostas:
$post
na função de retorno de chamada é uma matriz, não um objeto. Então você não pode usar$post->id
. Altere para$post['id']
e deve funcionar:Eu recomendo mudar
_phone
paraphone_number
ou qualquer outra coisa sem prefixo de sublinhado. Porque_
é frequentemente usado com meta chaves privadas. Tente adicionar um campo personalizado que possua meta-chave com_
prefixo diretamente no seu post, você verá o que eu quis dizer.fonte
A API do WP possui um
rest_prepare_post
filtro (ourest_prepare_CPT
se você estiver trabalhando com postagens personalizadas) que pode ser usado para modificar a resposta JSON. No seu caso, serárest_prepare_joblisting
.Usando o mesmo filtro, você também pode remover campos / dados da resposta e fazer qualquer manipulação dos dados.
fonte
Basta adicionar esses métodos ao function.php
fonte
Aqui está um exemplo de POO:
fonte