Você está na página 1de 5

Puxando cdigo HTML WordPress em ASP

clssico
Este , de longe, a abordagem mais simples, mas que se liga a estrutura de
sada para o local WordPress. Eu usei isso quando eu estava substituindo um
site ASP clssico com uma nova, grande site WordPress, que foi construdo
em etapas ao longo de um perodo de tempo. I necessrio para mover
alguma administrao de dados em toda a WordPress, mas continuar a
mostrar os dados no site do ASP clssico.
Ao invs de duplicar os dados do WordPress atravs de algo clssico ASP
poderia acessar, optei por apenas tomar a sada HTML a partir do WordPress
e exibi-lo no site da Classic ASP. O site WordPress usa cdigos de acesso
para exibir tabelas de dados e formulrios de pesquisa para que os dados.
No WordPress, uma funo shortcode deve devolver o HTML para a pgina
como uma string, dado um conjunto de parmetros, por isso fcil de
apenas chamar a funo shortcode e pegar o HTML para retornar via AJAX.
O HTML, neste caso, tem um formulrio de pesquisa, e uma tabela de
dados. I necessrio para processar todos os parmetros de busca para
passar para WordPress, e exibir o HTML na pgina Classic ASP aps a
pesquisa. Toda a lgica de pesquisa e formatao real no site do
WordPress, em um plug-in personalizado.
Eis os bits interessantes do cdigo no meu plugin para WordPress; Eu deixei
para fora como o HTML foi gerado porque no importante para este post,
mas voc provavelmente pode imaginar a consulta de banco de dados de
costume, iterao para construir uma tabela de HTML, e formulrio de
pesquisa
// add the AJAX actions, for both anonymous and logged-in users
add_action('wp_ajax_awri-yeb-ext', 'ajaxYebExternal');
add_action('wp_ajax_nopriv_awri-yeb-ext', 'ajaxYebExternal');
/**
* run the YEB search from an external site,
* returning HTML for insertion into external website's pages
*
* NB: search terms will be found in $_POST per normal,
* just posted by AJAX instead
*/
function ajaxYebExternal() {
$baseURL = stripslashes($_GET['base']);
$search = new YebSearch();
$search->setBaseURL($baseURL);
$html = $search->replaceShortTag(array());
header('Content-type: text/html');

echo $html;
exit;

Agora, aqui est como eu puxei-o em toda a Classic ASP. Lembre-se que o
HTML inclui um formulrio de pesquisa, ento eu tenho que verificar a
existncia de parmetros de busca para passar para WordPress, juntamente
com a ao AJAX.
' enviar uma solicitao HTTP para novo site WordPress para fazer a
pesquisa l em dados atuais
Sub ShowRemoteYEB()
Dim xhr, post, url, baseURL
On Error Resume Next
Err.Clear
' URL base para todos os links em pginas, e a ao formulrio de
pesquisa
baseURL = "http://" & Request.ServerVariables("HTTP_HOST") &
Request.ServerVariables("SCRIPT_NAME")
' AJAX service URL
url = "http://example.com/wp-admin/admin-ajax.php"
' construir o pedido AJAX, dando a ao AJAX e nosso nome roteiro,
alm de quaisquer parmetros de busca
post = "action=awri-yeb-ext&base=" & Server.URLEncode(baseURL)
For Each i In Request.QueryString
post = post & "&" & Server.URLEncode(i) & "=" &
Server.URLEncode(Request.QueryString(i))
Next
Set xhr = Server.CreateObject("MSXML2.ServerXMLHTTP")
xhr.setTimeouts 60000, 60000, 60000, 180000
xhr.open "GET", url & "?" & post, False
xhr.setRequestHeader "Content-Type", "application/x-www-formurlencoded"
xhr.send
If Err.Number = 0 Then
Response.Write xhr.responseText
End If
Set xhr = Nothing
On Error GoTo 0
End Sub

Tudo o que era necessrio, em seguida, era uma cpia de scripts JavaScript
do formulrio e alguns CSS para estilizar o HTML para que ele combinava
com o resto do site do ASP clssico, at que todo o site finalmente
atravessaram a WordPress.

Puxando XML a partir do WordPress e


processamento em ASP clssico
Eu fao um pouco de adivinhao de manuteno em um site portal escrito
em ASP clssico. Ele tem o costume variedade de artigos de notcias,
eventos, um diretrio indstria, anncios classificados, e anncios de
emprego. Recentemente, os anncios de emprego mudou-se para um novo
site WordPress usando um plugin empregos bordo (que uma srie de
histrias em si, apenas para ser informado sobre pequenos copos de algo
forte!)
Para obter uma lista das ltimas vagas na primeira pgina do site do portal,
eu novamente utilizado AJAX para puxar a partir do site do
WordPress. Porque a formatao de dados foi diferente entre o site do
WordPress e no site do portal, eu escolhi para puxar os dados em XML e
como process-lo localmente em ASP clssico. Isso me permitiu fornecer um
nico feed XML a partir do WordPress, e processo e exibi-lo de forma
diferente em diferentes pginas ASP clssico.
Aqui est o ncleo do cdigo no WordPress.
// Adicionar as aes AJAX, tanto para usurios annimos e registrados
add_action ( 'wp_ajax_jobs-recente' , 'ajaxRecentJobs' );
add_action ( 'wp_ajax_nopriv_jobs-recente' , 'ajaxRecentJobs' );
/ **
* Funo AJAX retornar uma lista de trabalhos recentes
*/
funo ajaxRecentJobs () {
$ Limit = 10;
se (isset ( $ _GET [ 'limite' ])) {
$ Limit = @ intval ( $ _GET [ 'limite' ]);
se ( $ limit <= 0)
$ Limit = 10;
}
// Cria um novo escritor XML
$ Xml = nova XMLWriter ();
Xml $ -> openMemory ();
$ Xml -> startDocument ( '1.0' , 'UTF-8' );
$ Xml -> startElement ( "empregos" );
// Pedir empregos placa plug-in para uma lista de trabalhos

$ Joblist = Wpjb_Model_Job :: ActiveSelect ()


-> Limite ( $ limit )
-> Execute ();
// Iterar lista, somando-se XML
foreach ( $ Joblist como $ job ) {
$ Xml -> startElement ( 'trabalho' );
$
$
$
$

Xml
Xml
Xml
Xml

->
->
->
->

writeElement
writeElement
writeElement
writeElement

(
(
(
(

'url' , wpjb_link_to ( 'trabalho' , $ job ));


'is_featured' , $ job -> is_featured);
'title' , $ job -> job_title);
'local' , $ job -> locationToString ());

// Deve atribuir a varivel antes do teste; empty () no pode testar


propriedades mgicas
$ Company_name = $ job -> company_name;
se (! vazia ( $ company_name )) {
$ Xml -> writeElement ( 'empresa' , $ company_name );
}
$ Job_created_at = $ job -> job_created_at;
se ( $ job_created_at ) {
// Deseja que a data em formato amigvel XML
// Ento converter de string para DateTime, e formato
$ Xml -> writeElement ( 'job_created_at' , date_create ( $
job_created_at ) -> format ( 'c' ));
}
$ Xml -> endElement ();
// trabalho
}
$ Xml -> endElement ();
// empregos

// Definir o tipo de contedo e enviar o XML


header ( 'Content-Type: application / xml; charset = utf-8' );
echo $ xml -> outputMemory ();
exit ;

E aqui est como eu cortava-lo no clssico do ASP para a primeira pgina do


site do portal.
'Enviar uma solicitao HTTP para recuperar uma lista XML de postos de
trabalho a partir do site Jobs e escrever para a pgina
Sub RecentJobs ()
Dim xhr, payload, xml, url
Dim trabalho, jobnodes, ttulo, local
Em Erro Retomar Seguinte
Err.Clear
'URL consulta AJAX
url = "http://example.com/wp-admin/admin-ajax.php?action=jobsrecent&limit=3"
Definir xhr = Server.CreateObject ( "MSXML2.ServerXMLHTTP" )
xhr.setTimeouts 60000, 60000, 60000, 180000
xhr.open "GET" , url, False
xhr.send

Se Err.Number = 0 Ento
Set xml = Server.CreateObject ( "MSXML2.DOMDocument" )
Se xml.loadXML (xhr.responseText) Em seguida,
Definir jobnodes = xml.documentElement.selectSingleNode ( "/
empregos" ) .childNodes
Se jobnodes.length = 0 Ento
Response.Write "<li> <strong> Nenhum registro encontrado. </
strong> </ li>" & vbCrLf
Mais
Para cada job Em jobnodes
title = job.selectSingleNode ( "./title" ) .text
location = job.selectSingleNode ( "./company" ) .text
Se Len (localizao)> 0 Ento
location = localizao & "/"
Fim Se
location = localizao & job.selectSingleNode
( "./location" ) .text
Se Len (localizao)> 0 Ento
title = title & ":" & localizao
Fim Se
Response.Write "<li> & raquo; <a href =" "" &
job.selectSingleNode ( "./url" ) .text & "" ">" _
& Server.HTMLEncode (ttulo) e "</a> </ li>" & vbCrLf
Next
Fim Se
Mais
Fim Se
Set xml = Nada
Fim Se
Definir xhr = Nada
No erro GoTo 0
End Sub

Na verdade, h alguns scripts diferentes, utilizando o XML


empregos alimentar, e um deles bastante
complexa; toda a lgica para que (lgica de exibio)
mantido em ASP clssico no site do portal, e no site
WordPress (e seu cdigo) nunca precisa de saber sobre
nada disso.