Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Plugin para mostrar contenido de base de datos

Estas en el tema de Plugin para mostrar contenido de base de datos en el foro de WordPress en Foros del Web. Muy buenas! Tengo una base de datos de corredores, competiciones, equipos, etc en mi web y me gustaría mostrarla de un modo "correcto" en mi ...
  #1 (permalink)  
Antiguo 11/06/2015, 19:14
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Plugin para mostrar contenido de base de datos

Muy buenas!

Tengo una base de datos de corredores, competiciones, equipos, etc en mi web y me gustaría mostrarla de un modo "correcto" en mi sitio wordpress.

Digo correcto porque de momento lo que he estado usando es una página con el código php a la que le paso las variables en la url para un GET, pero tengo la sensación (y me lo ha confirmado tanto google, como facebook al compartirlas) de que no estoy haciéndolo bien.

Mi duda es ¿como crear un plugin para pueda mostrar el contenido sin problemas y pasando urls "de verdad"? Tengo buenos conocimientos de PHP aunque quizás no tan buenos de Wordpress aún, ¿alguna recomendación de tutoriales, artículos que me ayuden para hacer lo que quiero?

Un saludo
  #2 (permalink)  
Antiguo 25/06/2015, 19:33
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Respuesta: Plugin para mostrar contenido de base de datos

Aún sigo con este tema pero no doy con una solución, ¿nadie me puede echar un cablecillo?

Saludos
  #3 (permalink)  
Antiguo 25/06/2015, 19:54
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 8 años, 1 mes
Puntos: 16
Respuesta: Plugin para mostrar contenido de base de datos

No comprendo exactamente.

¿Podrías explicar un poco más?
Entiendo que tienes unas tablas en una BD (puede que la misma que Wordpress) y quieres mostrarlas. No entiendo dónde. Tampoco entiendo eso de que le pasas las variables a través de una petición GET (sé cómo se hace, pero no para qué lo haces).

Dame más detalles y tal vez pueda ayudarte.
  #4 (permalink)  
Antiguo 25/06/2015, 21:43
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Respuesta: Plugin para mostrar contenido de base de datos

Gracias por tu respuesta, me explico:

La idea es que cada corredor o cada carrera tenga su propia "página" donde mostrarse, aunque obviamente no las propia de wordpress ya que sería inviable.

De momento lo que he hecho es crear una página de wordpress que toma la variable corredor desde la url para mostrar cada uno, pero claro, eso los buscadores no lo consideran y al final no sirve de nada. La url que paso es así: /carreras/?carrera=284 y desde ahí busco la carrera 284 desde un id y ya vuelco sus datos.
  #5 (permalink)  
Antiguo 26/06/2015, 04:22
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 8 años, 1 mes
Puntos: 16
Respuesta: Plugin para mostrar contenido de base de datos

Cita:
Iniciado por jona86 Ver Mensaje
Gracias por tu respuesta, me explico:

La idea es que cada corredor o cada carrera tenga su propia "página" donde mostrarse, aunque obviamente no las propia de wordpress ya que sería inviable.

De momento lo que he hecho es crear una página de wordpress que toma la variable corredor desde la url para mostrar cada uno, pero claro, eso los buscadores no lo consideran y al final no sirve de nada. La url que paso es así: /carreras/?carrera=284 y desde ahí busco la carrera 284 desde un id y ya vuelco sus datos.
Vale, que la generas de forma dinámica.
Eso realmente no es un problema para Google. Wordpress funciona de la misma forma que tú estás generando el contenido de las carreras.

Wordpress tiene una plantilla, al acceder a un enlace le pasaS la ID del post como parámetro GET, PHP toma el valor del parámetro, solicita a la BD el post con esa ID, la BD lo devuelve, PHP lo imprime en HTML (puede que cuando accedes a un post no veas la ID. Eso es por que tienes activadas las URL amigables pero, si las desactivas, verás que tienes un número que corresponde con la ID del post).

Es lo mismo que tú estás haciendo. Si Google enlaza eso... ¿por qué no va a enlazar a los corredores?

Para quedarte más tranquilo podrías hacer dos cosas:
  • Crea una página donde tengas todos los corredores o categorías o como lo tengas (de las estáticas de Wordpress). Así, cuando entren las arañas de Google en busca de enlaces, encontrarán los enlaces a esas páginas generadas de forma dinámica
  • Añade esas URL al sitemap

Una duda: ¿cómo has hecho para introducir PHP? ¿A mano o con algún plugin? Es por curiosidad.
  #6 (permalink)  
Antiguo 26/06/2015, 04:44
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Respuesta: Plugin para mostrar contenido de base de datos

El código en PHP está directamente escrito a mano. La verdad es que la forma de la que me dí cuenta del "error" es al compartir una página dinámica en Facebook. Al pasar la url /carreras/?carrera=284 se queda en carreras/ y no me toma la variable, por lo mismo creo que Google se lo salte también, de hecho nunca ha llegado nadie a través del buscador a la página de corredor o carrera
  #7 (permalink)  
Antiguo 26/06/2015, 06:57
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 12 años, 11 meses
Puntos: 1145
Respuesta: Plugin para mostrar contenido de base de datos

Lo que ocurre es que aparte de llamar a esa información debes hacer que modifique el titulo, y agregue algunas metatags

Puedes explicarnos que método realizas para mostrar ese contenido? el que lo hayas escrito manualmente tu no debe importar, alguien tuvo que hacer manualmente el template, los plugins hasta el propio core de wordpress y funciona.

de igual te paso algunos links que considero pueden ayudar a solventar tu problema
https://codex.wordpress.org/Plugin_A...rence/wp_title
https://codex.wordpress.org/Plugin_A...ence/the_title
https://codex.wordpress.org/Plugin_A...erence/wp_head
https://codex.wordpress.org/Plugin_A...ce/the_content
  #8 (permalink)  
Antiguo 26/06/2015, 08:16
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Respuesta: Plugin para mostrar contenido de base de datos

Es lo que comentaba en el primer post, no he creado un plugin, simplemente muestro los datos desde una página de wordpress creada desde una plantilla donde tengo todo el código PHP.
  #9 (permalink)  
Antiguo 26/06/2015, 10:07
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 12 años, 11 meses
Puntos: 1145
Respuesta: Plugin para mostrar contenido de base de datos

Y quien dijo que se necesitaba si o si un plugin? puedes hacerlo a nivel template, la mayoría de las funciones de wordpress funcionan tanto en template como plugin.

No esperes que seamos adivinos para saber como lo haz hecho y decir como solventarlo, muéstranos tu código y veremos que se puede hacer.
Yo de entrada te he dejado links que te pueden ser de ayuda.... los has revisado? te sirven o no es lo que buscas?
  #10 (permalink)  
Antiguo 26/06/2015, 13:01
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Respuesta: Plugin para mostrar contenido de base de datos

En cuanto llegue a mi casa os pongo el código completo. Muchas gracias por tu ayuda ;)
  #11 (permalink)  
Antiguo 26/06/2015, 13:19
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 8 años, 1 mes
Puntos: 16
Respuesta: Plugin para mostrar contenido de base de datos

Otra cosa:
¿es un fichero dentro del theme o en la raiz del sitio o cómo?
  #12 (permalink)  
Antiguo 26/06/2015, 18:29
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Respuesta: Plugin para mostrar contenido de base de datos

Os dejo mi código, está dentro del template ya que está en una plantilla de página, aunque también lo he utilizado directamente en la página gracias al plugin Exec-PHP

Código PHP:
<?php
$cid 
$_GET['ciclista'];
$conexion mysqli_connect(****);

$acentos = array("ñ""á""é""í""ó""ú""Ñ""Á""É""Í""Ó""Ú"" ");
$sinacentos = array("n""a""e""i""o""u""N""A""E""I""O""U""_");

$sql "SELECT nombre, apellidos, pais, fecha_nacimiento, lugar_nacimiento, ccaa FROM amateur_corredores WHERE id = $cid";
$result mysqli_query($conexion,$sql);
list(
$nombre$apellidos$nacionalidad$nacimiento$lugar$ccaa) = mysqli_fetch_row($result);

$sqlpais "SELECT nombre FROM nuke_paises WHERE id = '".$nacionalidad."'";
$resultpais mysqli_query($conexion,$sqlpais);
list(
$nompais) = mysqli_fetch_row($resultpais);

$img strtolower(str_replace($acentos$sinacentos$nompais));

if (
$ccaa!=NULL){
$sqlccaa "SELECT iniciales,nombre FROM nuke_ccaa WHERE id='".$ccaa."'";
$resultccaa mysqli_query($conexion,$sqlccaa);
list (
$iniccaa,$nomccaa) = mysqli_fetch_row($resultccaa);
}

  
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})"$nacimiento$arraynacimiento);
  
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})"$fallecimiento$arrayfallecimiento);
  
      
$diahoy=date(j);
    
$meshoy=date(n);
    
$anohoy=date(Y);
 
    if ((
$arraynacimiento[2] == $meshoy) && ($arraynacimiento[3] > $diahoy)) {
    
$anohoy=($anohoy-1); }
 
    if (
$arraynacimiento[2] > $meshoy) {
    
$anohoy=($anohoy-1);}
 
    
$edad=($anohoy-$arraynacimiento[1]);


echo 
"<div class='cyclist'>";
if (
file_exists("./wp-content/images/ciclistas_am/g_$cid.jpg")) echo"<img src='../../wp-content/images/ciclistas_am/g_$cid.jpg' width='660' heigth='350'>";
else echo
"<img src='../../wp-content/images/ciclistas_am/g_blank.jpg' width='660' heigth='350'>";

echo
"<div class='cyclist_info'>";

if (
file_exists("./wp-content/images/ciclistas_am/$cid.jpg")) echo"<div class='ciclista-wrap2'><img src='../../wp-content/images/ciclistas_am/$cid.jpg' class='ciclista'></div>";
else echo 
"<div class='ciclista-wrap2'><img src='../../wp-content/images/ciclistas_am/blank.jpg' class='ciclista'></div>";
echo
"<h3 class='nombre' style='margin-left:45px;'> $nombre $apellidos</h3>
<span class='info'>"
;

if(
$nacionalidad != 58) echo"<img src='../../wp-content/images/banderas/$img.gif' alt='$nombre_pais'>";
else echo
"<img src='../../wp-content/images/banderas/ccaa/$iniccaa.gif' alt='$nomccaa'> $nomccaa,";
echo
" $nompais</span><br>";

echo 
"<span class='info'>";
if (
$arraynacimiento[3] !=0) echo "$arraynacimiento[3]-$arraynacimiento[2]-";
echo
"$arraynacimiento[1] ";

if (
$lugar != NULL) echo "| $lugar";

echo
"</span>

</div>
</div>"
;

echo
"<table border='0' style='float: left; '><tr><th colspan='5'><font color='365f91' SIZE='2'><b>RESULTADOS</b></font></th></tr>";

$sqlprimer "SELECT a.id, MAX(year(b.fecha_inicio)),MIN(year(b.fecha_inicio)) FROM (amateur_resultados AS a) , (nuke_calendario AS b) WHERE a.cid = $cid AND b.id = a.race";
$resultprimer mysqli_query($conexion,$sqlprimer);
list(
$res,$aniomax,$aniomin) = mysqli_fetch_row($resultprimer);

if (
$aniomax != NULL) {

for (
$i $aniomax$i >= $aniomin$i--) {

echo 
"<tr><td colspan='3'><b>$i ";

$sqlultequipo "SELECT tid FROM amateur_corredores_equipos WHERE cid = '$cid' AND year(fecha_inicio) <= '$i' AND (fecha_fin IS NULL OR year(fecha_fin)= '$i')";
$resultultequipo mysqli_query($conexion,$sqlultequipo);
list(
$tid2) = mysqli_fetch_row($resultultequipo);

$sqlnombre "SELECT nombre FROM amateur_equipos_nombres WHERE tid = '$tid2' AND anio = '$i'";
$resultnombre mysqli_query($conexion,$sqlnombre);
list(
$nombreeq) = mysqli_fetch_row($resultnombre);

echo 
"- $nombreeq</b></td><td colspan='2' style='text-align:center;'>";

$sqlvictorias "SELECT COUNT(a.id) FROM (amateur_resultados AS a), (nuke_calendario AS b) WHERE a.cid = '$cid' AND a.pos = '1' AND year(b.fecha_inicio) = '$i' AND b.id = a.race";
$resultvictorias mysqli_query($conexion,$sqlvictorias);
list(
$vic) = mysqli_fetch_row($resultvictorias);

echo
"<b>$vic victorias</b></td></tr>";

$sqlpalmares "SELECT a.race,a.pos,a.etapa,b.nombre,b.fecha_inicio,b.tipo,b.pais,b.ccaa FROM (amateur_resultados AS a), (nuke_calendario AS b) WHERE a.cid=$cid AND b.id=a.race AND year(b.fecha_inicio)=$i ORDER BY b.fecha_inicio DESC, a.etapa ASC ";
$resultpalmares mysqli_query($conexion,$sqlpalmares);
while(list(
$rid,$posicion,$etapa,$nombre_carr,$fecha_ini,$categoria,$pais,$ccaa) = mysqli_fetch_row($resultpalmares)) {

    
$sqltipo "SELECT nombre FROM nuke_categorias WHERE id=$categoria";
    
$resulttipo mysqli_query($conexion,$sqltipo);
    list(
$categoriarace) = mysqli_fetch_row($resulttipo);

    
$sqlccaa "SELECT iniciales FROM nuke_ccaa WHERE id = $ccaa ";
    
$resultccaa mysqli_query($conexion,$sqlccaa);
    list(
$iniccaa) = mysqli_fetch_row($resultccaa);

    
$sqlpaisc "SELECT nombre FROM nuke_paises WHERE id = $pais";
    
$resultpaisc mysqli_query($conexion,$sqlpaisc);
    list(
$nompaisc) = mysqli_fetch_row($resultpaisc);

    
$imgc strtolower(str_replace($acentos$sinacentos$nompaisc));

    
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})"$fecha_ini$arrayfechainicio);

echo
"<tr><td width='10%' align='center'>".$posicion."&ordm;</td>";
echo
"<td width='7%' align='center'>$categoriarace</td>";
echo
"<td width='55%'><img src='../../wp-content/images/banderas/$imgc.gif' width='16' heigth='10'> <img src='../../wp-content/images/banderas/ccaa/$iniccaa.gif' width='16' heigth='10'> <a href='http://elpeloton.net/elite-sub23/carrera/?carrera=$rid'>";
if(
$etapa != NULL) { 
if(
$etapa == 0) echo "General ";
else echo
"Etapa $etapa "
}
echo
"$nombre_carr</a></td>";
echo
"<td width='15%' align='center'>$arrayfechainicio[3]-$arrayfechainicio[2]-$arrayfechainicio[1]</td>";
echo
"<td width='13%' align='right'>-</td></tr>";

}
/*while*/

}/*for*/

/*if*/

echo"</table>";


?>
  #13 (permalink)  
Antiguo 26/06/2015, 19:09
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 8 años, 1 mes
Puntos: 16
Respuesta: Plugin para mostrar contenido de base de datos

¿Eso es todo el fichero o hay más?
  #14 (permalink)  
Antiguo 27/06/2015, 05:29
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Respuesta: Plugin para mostrar contenido de base de datos

Es el fichero completo con el que imprimo los datos, tengo otro para las modificaciones en la base de datos pero es independiente completamente
  #15 (permalink)  
Antiguo 27/06/2015, 07:43
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 12 años, 11 meses
Puntos: 1145
Respuesta: Plugin para mostrar contenido de base de datos

Te has molestado en ver los links que te he dejado o simplemente has ignorado? venga que si ese codigo que usas y no hay mas que contenga el head html no hay nada que hacer por ti si no te molestas en ver lo que se te indica.
  #16 (permalink)  
Antiguo 27/06/2015, 18:21
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 8 años, 1 mes
Puntos: 16
Respuesta: Plugin para mostrar contenido de base de datos

Cita:
Iniciado por ArturoGallegos Ver Mensaje
Te has molestado en ver los links que te he dejado o simplemente has ignorado? venga que si ese codigo que usas y no hay mas que contenga el head html no hay nada que hacer por ti si no te molestas en ver lo que se te indica.
Por eso preguntaba que si era todo el fichero completo :P
  #17 (permalink)  
Antiguo 27/06/2015, 18:41
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 9 años
Puntos: 1
Respuesta: Plugin para mostrar contenido de base de datos

Tengo una función titulo() en el functions del theme a la que se llama desde el head:

Código PHP:
function titulo() {
$conexion mysqli_connect(****);
if ( 
is_page(24063) ) {
        
$cid $_GET['ciclista'];
        
$sql "SELECT nombre, apellidos FROM amateur_corredores WHERE id = $cid";
        
$result mysqli_query($conexion,$sql);
        list(
$nombre,$apellidos) = mysqli_fetch_row($result);

        echo 
"$nombre $apellidos - El Pelotón";
    }

    else 
wp_title'|'true'right' );


Y funciona correctamente en wordpress, menos al compartir y demás como os comentaba. Estoy con los links que me enviaste Arturo, pero no he tenido mucho tiempo aún para apl
  #18 (permalink)  
Antiguo 27/06/2015, 20:14
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 12 años, 11 meses
Puntos: 1145
Respuesta: Plugin para mostrar contenido de base de datos

Pues habrá que dedicarle tiempo, si revisas los links que te proporcione veras que los filtros para los títulos no usan echo sino return....

un echo me da la impresión que lo estas imprimiendo como parte del contenido y no como un filtro, vuelve a la documentación y leela detenidamente.

Sumado a eso, algo que no has mostrado y no sabemos si usas microdata para redes sociales (Schema.org microdata) o bien metatags como open graph

Resaltese que esa opción no es la ideal pues solo es para redes sociales no para el buscador, aparte de que con o sin estas debería tomarte el titulo de la pagina correctamente.... pero son una opción que te puede funcionar.

Etiquetas: mysql, plugin
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:23.