Consumindo uma API externa no WordPress?

9

Eu tenho um cliente que possui um site WordPress e ele deseja estendê-lo para adicionar novas funcionalidades. Essas funcionalidades estão incluídas em um site que eu já fiz (um tipo de mecanismo de pesquisa em um banco de dados, com alguns filtros), e que está sob novas melhorias.

O que estou planejando fazer é criar uma API json do meu site (com todas as funções de pesquisa no meu banco de dados) e criar o site wordpress consumindo essa API, então só precisarei criar visualizações para mostrar os resultados da pesquisa.

O problema é que eu não conheço o WordPress (para mim é algo em que você pode adicionar artigos via painel de administração ...) e não sei como podemos escrever nosso próprio código no servidor. Pesquisei no Google e encontrei algo chamado "plugin", mas estou pensando se é possível fazê-lo, e se é a maneira mais simples de fazer isso, pois não preciso ter o código usado por nenhum outro terço festa. Se for possível hackear uma instalação do WordPress para adicionar meus arquivos PHP, codifique o que eu preciso (meus pontos de vista com o mesmo css do WordPress) seria mais simples, mas não sei se é possível?

tahir
fonte
O que exatamente você está tentando fazer, leia um feed json no wordpress, insira dados em um banco de dados, publique via XML-RPC, tente e seja mais claro.
Wyck
leia o feed json. por exemplo, o site wordpress deve conter um formulário de pesquisa; ao enviar, ele realiza uma chamada de entrada para uma API, a API retornará objetos em json e eu devo exibir esses resultados em uma página do site wordpress
tahir
11
@tahir Estou tentando fazer exatamente isso. Você seria capaz de compartilhar como alcançou seu objetivo?
21314 SAHM

Respostas:

9

Uma breve introdução ao desenvolvimento do WordPress que pode ajudar ou confundir você:

A principal coisa a ter em mente: é tudo apenas PHP. E também: não edite os arquivos principais do WordPress, pois você terá problemas ao atualizar para uma versão mais recente mais tarde. O único código que você deve editar é o de plugins e temas.

Se você precisar apenas adicionar algo a uma página existente, poderá funcionar apenas para editar o arquivo de tema correto. No entanto, se você precisar fazer algo avançado (e adicionar uma "visualização" extra, como em uma URL específica, for mais avançada no WordPress), será necessário adicionar o código em um local que será carregado anteriormente no processo de inicialização do WordPress .

A razão para isso é que o WordPress sempre faz uma consulta de postagem para você, com base na URL. Para onde você vai /category/banana/, ele consultará as postagens da categoria bananae carregará o arquivo de modelo correto, onde você só precisará fazer o loop e exibi-las. No entanto, se você for /custom-view/, o WordPress provavelmente não encontrará nenhuma postagem e carregará o modelo 404 - não oferecendo uma maneira fácil de recuperar!

Algumas pessoas resolvem isso criando "páginas de stub": elas criam uma página no WordPress em que o conteúdo não é importante, apenas o modelo é: lá elas fazem o que quiserem. Isso é uma tolice, mas funciona. A maneira mais limpa seria definir regras extras de reescrita , que informam ao WordPress que /custom-view/é uma URL válida, mas que algo mais deve acontecer lá.

Se você quiser fazer isso, precisará se conectar ao sistema WordPress principal. A parte importante aqui é conectar , não modificar . WordPress tem ações e filtros . Uma ação é apenas um anúncio ( "Ei, estamos escrevendo a <head>tag no momento. Deseja adicionar alguma coisa também?" ). Um filtro permite modificar uma variável ( "Este é o título da postagem. Se você deseja modificá-la, retorne um novo valor" ). Obviamente, o truque agora é saber quais ações e filtros você deve usar. Isso depende da maneira que você escolher (páginas stub ou novas regras de reescrita), portanto não entrarei em detalhes aqui.

Você define as ações e os filtros que deseja usar em um arquivo de plug-in ou no arquivo functions.php do seu tema. Eles são especiais porque são carregados durante a inicialização do WordPress , portanto, antes da execução da consulta principal e assim por diante. Um arquivo de plug-in é apenas um arquivo PHP, colocado no wp-content/plugins/diretório, com um cabeçalho especial para que o WordPress possa ler seu nome e exibi-lo na área de administração onde você pode habilitá-lo e desabilitá-lo (para que você possa deixar o plug-in no diretório, mas temporariamente desativá-lo).

Jan Fabry
fonte
2

Fundamentos

Você precisa conhecer o básico para plugins e temas. Em resumo: são adições à funcionalidade principal do wordpress. Normalmente, "Plugins" são mais sobre funcionalidade e "Temas" são mais sobre "visualização". Você também pode querer ler um pouco sobre a "API de plug-in" .

JSON

Convém usar o script json2 incorporado no núcleo para fornecer uma API "segura".

Exemplo JSON

O resto seria algo como isto:

$response = json_encode( array( 
     'data' => $your_output 
) );
header( "Content-Type: application/json" );
echo $response;

XML Rpc

O Codex também tem algo sobre o "XML Rpc" .

API HTTP

Outra possibilidade pode ser solicitações http . Certifique-se de ler as referências na parte inferior do link.


Webhooks

Isso é adicional, pois trata-se de fornecer uma API consumível. Explicação aqui . E também há um plugin chamado HookPress que faz esse trabalho para você. Alguns slides do autor também.

kaiser
fonte
1

Eu suponho que você conhece PHP? Ou isso também é barreira?

Essencialmente, os plug-ins no WordPress são uma convenção sobre como empacotar o código PHP para que seja reconhecido e tratado pelo núcleo do WordPress. É o formato, e não a funcionalidade.

Quanto à funcionalidade real, você pode executar PHP arbitrariamente, mas é uma boa prática usar as APIs do WP para compatibilidade e confiabilidade.

Pense no seu código no contexto do WP como include(que será tecnicamente). A partir daí, o escopo de suas necessidades e recursos determinará quanto será reescrito para ser específico ao WordPress.

Rarst
fonte
0

Sim, é possível.

a maioria dos plugins é criada através dos chamados ganchos:

por exemplo:

add_action("hook", "function")

é muito fácil criar um plug-in depois que você souber como essa estrutura funciona ... eu recomendaria que você se familiarizasse com ela, o lugar mais extenso para o conhecimento (embora não seja o php mais organizado). net) é o codex wordpress .

Itai Sagi
fonte