Pregunta sobre Developing with WordPress de Wordpress:

Usando y foreach con $ wpdb

Un usuario pregunt贸 馃憞

Hola

Estoy usando ACF (Campos personalizados avanzados) los fines de semana. Tengo un post_type llamado 芦rundowns禄 para hacer algunas listas de publicaciones de otro post_type llamado 芦elementos禄. A medida que voy hacia abajo, estoy usando ACF para editar el ID del trabajo de los 芦elementos禄 post_type.

Ahora quiero mostrar todas las publicaciones en todas las p谩ginas pasadas (post-rundown.php), pero quiero cambiar el orden de la lista con arrastrar y soltar.

Obtuve estos c贸digos, pero no puedo obtener los resultados de MySQL.

En la parte superior de one-rundown.php:

get_header();
function get_records()
{
	//$con=connectsql();
	$records=$wpdb->query("SELECT * FROM $wpdb->posts WHERE post_type = 'elements' AND post_status = 'publish'");
	$all=array();
	while($data=$records->fetch_assoc())
	{
		$all[]=$data;
	}
	return $all;
}

Y aqu铆 est谩 el c贸digo para mostrar:

<ul id="sortable">
<?php $data=get_records(); ?> 
<?php foreach($data as $record): ?>
<li data-id="<?php echo $record['id'];  ?>" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><?php echo $record['id'];  ?><?php echo $record['name']; ?></li>
<?php endforeach; ?>
</ul>
<button id="save-reorder">Save</button>

(@diondesigns)

Hace 2 a帽os, 7 meses

WordPress usa el acceso de estilo procedimental en su DBAL porque admite ambos mysql y mysqli extensiones. Eso significa que primero debes decidir qu茅 extensi贸n $wpdb usando, y luego usando el comando de procedimiento apropiado. 隆Aseg煤rese de publicar el conjunto de resultados m谩s tarde!

Para su informaci贸n, su c贸digo se ejecutar铆a m谩s r谩pido si eliminara el get_records() funci贸n y agr茅guelo directamente en su c贸digo de visualizaci贸n. Eso eliminar铆a uno de los dos bucles.

(@bcworkz)

Hace 2 a帽os, 7 meses

Necesitas declarar global $wpdb; dentro del alcance de su uso. Dentro de la declaraci贸n de funci贸n si te apegas a eso, o en la plantilla si sigues el consejo de Dion.

(@wamslers)

Hace 2 a帽os, 7 meses

@diondesigns Pero, 驴c贸mo puedo determinar la extensi贸n de mysql?

Ahora he intentado combinar los dos bucles, pero no puedo encontrar ning煤n resultado en la base de datos.

<?
get_header();
global $wpdb;
?>

鈥 ..

<?php 
$records=$wpdb->query("SELECT * FROM $wpdb->posts WHERE post_type = 'elements' AND post_status = 'publish'");
$all = array();
foreach($data as $records): 
  $all[]=$data; ?>

<li data-id="<?php echo $data['id'];  ?>" class="ui-state-default">
  <span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
  <?php echo $data['id'];  ?>
  <?php echo $data['name']; ?>
  <?php echo $data['post_title']; ?>
</li>

<?php 
endforeach; 
return $all; 
?>

Esta respuesta fue modificada hace 2 a帽os, 7 meses.

(@bcworkz)

Hace 2 a帽os, 7 meses

Solo $ wpdb-> query () devuelve solo las filas encontradas. Los resultados reales est谩n en los resultados de $ wpdb->.

Sus par谩metros foreach est谩n invertidos. Suponiendo que se encontrar谩n resultados y no filas en $ registros, foreach( $records as $data ):

(@wamslers)

Hace 2 a帽os, 7 meses

Estoy chirriante, s铆, tiene sentido cambiar los par谩metros en el foreach, pero todav铆a no funciona 馃檨

<?php 
$records=$wpdb->results("SELECT * FROM $wpdb->posts WHERE post_type = 'elements' AND post_status = 'publish'");
$all = array();
foreach($records as $data): 
$all[]=$data; 
// doing stuff
endforeach; 
return $all; 
?>

Creo que mi declaraci贸n SELECT es incorrecta. Cuando utilizo un enlace manual de mysqli, funciona con una tabla sin palabras. Tengo el mundo $wpdb; justo detr谩s del get_header();

(@wamslers)

Hace 2 a帽os, 7 meses

Funciona ahora cuando lo uso get_results en vez de results

驴Solucion贸 tu problema??

0 / 0

Deja una respuesta 0

Tu direcci贸n de correo electr贸nico no ser谩 publicada.