• Tenho uma base de dados de um site antigo, ele nao utilizava wordpress. agora estamos migrando para o wordpress e gostariamos de utilizar essa base e fazer as querys especificas, vi a possibilidade de usar o WPDB mais tem algumas regras que nao entendi.

    um exemplo é o codigo abaixo, como poderia fazer ele com o WPDB.

    $destaquesImoveis= new MySQL();
        $destaquesImoveis->set_table('Property as imovel');
        $destaquesImoveis->set_where('      imovel.id="'.$idImovel[0].'"');
        $destaquesImoveis->set_where('OR    imovel.id="'.$idImovel[1].'"');
        $destaquesImoveis->set_where('OR    imovel.id="'.$idImovel[2].'"');
        $destaquesImoveis->set_colum('imovel.id');
        $destaquesImoveis->set_colum('imovel.CITY');
        $destaquesImoveis->set_colum('imovel.SALE_PRICE');
        $destaquesImoveis->set_colum('imovel.MS_LISTING_ID');
        $destaquesImoveis->set_colum('imovel.ZIP_CODE');
        $destaquesImoveis->set_colum('imovel.CITY');
        $destaquesImoveis->set_colum('imovel.BUILDING_SQUARE_FOOTAGE');
        $destaquesImoveis->set_colum('imovel.BEDROOMS');
        $destaquesImoveis->set_colum('imovel.BATHS_TOTAL');
        $destaquesImoveis->set_colum('imovel.YEAR_BUILT');
        $destaquesImoveis->set_colum('local.STREET_NAME');
        $destaquesImoveis->set_colum('local.STREET_NUMBER');
        $destaquesImoveis->set_colum('local.PROPERTY_STATE_ID');
        $destaquesImoveis->set_colum('local.STREET_TYPE');
        $destaquesImoveis->join(" INNER ",'_masse_CITY as city', 'city.id=imovel.CITY');
        $destaquesImoveis->set_colum('city.CITY_NAME');
        $destaquesImoveis->set_colum('foto.URL');
        $destaquesImoveis->join(" INNER ",'PHOTO as foto', 'foto.id=(SELECT id FROM PHOTO as foto2  WHERE foto2.PROPERTY_ID=imovel.MS_LISTING_ID LIMIT 0,1)');
        $destaquesImoveis->join(" INNER ",'LOCATION as local', 'imovel.LOCATION=local.id');
        $destaquesImoveis->select();
Visualizando 1 resposta (de um total de 1)
  • Olá, Isaias Antunes!

    Coloque suas tabelas na mesma base de dados onde estão as tabelas da sua instalação do WordPress. Assim, é só criar a query como abaixo.

    global $wpdb;
    
    $sql = $wpdb->prepare(
    	"
    	SELECT  	imovel.id,
    			imovel.CITY,
    			imovel.SALE_PRICE,
    	    		imovel.MS_LISTING_ID,
    	    		imovel.ZIP_CODE,
    	    		imovel.CITY,
    	    		imovel.BUILDING_SQUARE_FOOTAGE,
    	    		imovel.BEDROOMS,
    	    		imovel.BATHS_TOTAL,
    	    		imovel.YEAR_BUILT,
    	    		local.STREET_NAME,
    	    		local.STREET_NUMBER,
    	    		local.PROPERTY_STATE_ID,
    	    		local.STREET_TYPE,
    			city.CITY_NAME,
    			foto.URL
    	FROM 		Property imovel
    	INNER JOIN 	_masse_CITY city
    			ON city.id = imovel.CITY
    	INNER JOIN 	PHOTO foto
    			ON foto.id = (SELECT id FROM PHOTO foto2 WHERE foto2.PROPERTY_ID = imovel.MS_LISTING_ID LIMIT 0,1)
    	INNER JOIN 	LOCATION local
    			ON imovel.LOCATION = local.id
    	WHERE		imovel.id = %s
    			OR imovel.id = %s
    			OR imovel.id = %s
    	",
    	$idImovel[0],
    	$idImovel[1],
    	$idImovel[2]
    );
    $destaquesImoveis = $wpdb->get_results( $sql );

    Note que não fiz qualquer alteração no seu código original. Tentei fazer apenas uma “tradução”. A cláusula WHERE poderia utilizar a comparação com IN, por exemplo.

    Em resumo, para se trabalhar com a classe wpdb só é preciso montar as consultas SQL corretamente. O que acontece é que seu sistema anterior utiliza a classe MySQL para ajudar na montagem das consultas e isso pode te dar um trabalho extra para conseguir gerar as consultas em SQL “de verdade”.

    Como não tenho a base para efetuar testes, meu código acima pode conter algum erro, mas a idéia geral você conseguirá pegar. Espero ter ajudado.

Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Como usar o WordPress com base de dados (nao wp) externa.’ está fechado para novas respostas.