Consumindo uma API externa no WordPress?

8

Eu tenho um cliente que tem um site WordPress, e ele quer estendê-lo para adicionar novas funcionalidades. Essas funcionalidades estão incluídas em um site que já fiz (um tipo de mecanismo de pesquisa sobre 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 toda a função de pesquisa sobre o meu banco de dados), e fazer o site wordpress consumindo esta API, então eu só terei que criar visualizações para mostrar a pesquisa resultados.

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 eu não sei como podemos escrever nosso próprio código do lado do servidor nele . Eu pesquisei no Google e encontrei algo chamado "plugin", mas estou pensando se é possível fazê-lo, e se é a maneira mais simples de fazer, pois não preciso ter o código usado por qualquer outro terceiro festa. Se é possível hackar uma instalação do WordPress para adicionar meus arquivos PHP, codifique o que eu preciso (minhas visões com o mesmo WordPress css) seria mais simples, mas não sei se é possível?

    
por tahir 11.09.2011 / 19:02

4 respostas

8

Um breve resumo sobre o 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 quando atualizar para uma versão mais recente posteriormente. O único código que você deve editar é o dos plugins e dos temas.

Se você só precisa adicionar algo a uma página existente, pode funcionar apenas editar o arquivo de tema correto. No entanto, se você precisar fazer algo avançado (e adicionar uma "visualização" extra, como em um URL específico, é mais avançado no WordPress), é 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 postagem para você, com base no URL. Se você for para /category/banana/ , ele consultará as postagens da categoria banana e carregará o arquivo de modelo correto, no qual você só precisará fazer um loop e exibi-las. No entanto, se você for para /custom-view/ , o WordPress provavelmente não encontrará nenhuma postagem e carregará o modelo 404 - não sendo fácil recuperá-lo!

Algumas pessoas resolvem isso criando "páginas stub": elas criam uma Página no WordPress onde o conteúdo não é importante, apenas o modelo é: lá eles fazem o que querem fazer. Isso é hackish, mas funciona. A maneira mais limpa seria definir regras reescritas extras, que permitissem ao WordPress saber que /custom-view/ é uma URL válida, mas que algo mais deveria acontecer lá.

Se você quiser fazer isso, você precisa conectar-se ao núcleo do sistema WordPress. A parte importante aqui é hook into , não modificar . O WordPress tem ações e filtros . Uma ação é apenas um anúncio ( "Ei, estamos atualmente escrevendo a tag <head> . Deseja adicionar alguma coisa também?" ). Um filtro permite que você modifique uma variável ( "Este é o título da postagem. Se você quiser modificá-lo, retorne um novo valor" ). Claro, o truque agora é saber quais ações e filtros você deve usar. Isso depende da maneira como você escolhe (páginas stub ou novas regras de reescrita), então 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 eles são carregados enquanto o WordPress está inicializando , portanto antes da consulta principal ser executada e assim por diante. Um arquivo de plug-in é apenas um arquivo PHP, colocado no diretório wp-content/plugins/ , com um cabeçalho especial para que o WordPress possa ler seu nome e exibi-lo na área de administração, onde você pode ativá-lo e desativá-lo. diretório, mas desativá-lo temporariamente).

    
por Jan Fabry 11.09.2011 / 20:26
2

Noções básicas

Você precisa contornar o básico sobre plug-ins e temas. Em suma: Eles são adições à funcionalidade do núcleo do wordpress. Normalmente "Plug-ins" são mais sobre funcionalidade e " Temas " são mais sobre a" visão ". Talvez você também queira ler um pouco sobre a "API de plug-in" .

JSON

Você pode querer usar o script json2 incorporado ao núcleo para fornecer uma API "segura".

Exemplo de JSON

O resto seria algo assim:

$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 de HTTP

Outra possibilidade pode ser enlace . Certifique-se de ler as referências na parte inferior do link.

Webhooks

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

    
por kaiser 11.09.2011 / 19:13
1

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

Essencialmente plugins no WordPress são convenientes como empacotar código PHP para que seja reconhecido e manipulado pelo núcleo do WordPress. É o formato, e não a funcionalidade.

Quanto à funcionalidade real, você pode praticamente executar PHP arbitrário, mas é uma boa prática fazer uso das 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 dele será reescrito para ser específico do WordPress.

    
por Rarst 11.09.2011 / 20:19
0

Sim, é possível.

a maioria dos plugins é criada por meio dos chamados ganchos:

por exemplo:

add_action("hook", "function")

é bem fácil construir um plugin para você mesmo assim que você sabe como funciona esse framework, bem ... funciona ... Eu aconselho a se familiarizar com ele, o lugar mais extenso para o conhecimento (embora não o mais organizado - como php.net) é o códice wordpress .

    
por Itai Sagi 12.09.2011 / 02:22