Ordenar publicaciones en un sitio de WordPress con SQL personalizado

Tengo una función php que genera una lista separada por comas de ID de publicaciones que especifican el orden en que esas publicaciones deben mostrarse en mi sitio de WordPress.

Estoy buscando un lugar donde pueda insertar una consulta SQL como:

SELECT * FROM wp_posts WHERE ID IN ('1', '2', '3')

¿Qué archivo .php debo modificar? ¿Cómo debo expresar el SQL?

preguntado el 04 de julio de 12 a las 04:07

¿Podrías ser un poco más específico? ¿En qué archivo de plantilla quieres usar eso? ¿Es una página estática o una página de categoría? -

3 Respuestas

Pegue su función php en el archivo (carpeta raíz de wordpress)/wp-content/themes/(nombre de su tema)/functions.php La consulta SQL debería ser similar.

$sql=$wpdb->prepare("SELECT * FROM wp_posts WHERE ID IN ('1', '2', '3');");
$results=$wpdb->get_results($sql);          
echo ">>>>".$result[0]->something."<br />";//blah blah...

WoW, no mencioné $wpdp como global, ¡todavía el código funcionaba bien en mi sistema! De todos modos, te sugiero que escribas "global $wpdb" en tu función.

Ahora la pregunta principal es desde dónde deberías llamar a esta función; tienes que llamarlo desde theme/(tu tema)/index.php

Intente descubrir cómo se generan las publicaciones en su tema actual, ¡y es posible que obtenga lo que necesita hacer!

Respondido 12 Jul 12, 11:07

Primero debes usar wp_query para esto. Está diseñado para consultar publicaciones.

<?php
$args = array(
    'post__in' => array ( 1,2,3) //the Ids
);
$query = new WP_Query($args);
if ($query->have_posts()){
    while ($query->have_posts()) {
        $query->the_post();
        echo get_the_ID().'<br/>';
    }

} else {
    echo 'no posts found';
}

Acerca de la colocación
Aconsejo hacerlo en un plantilla personalizada, haga una plantilla simple con el código anterior, cree una página, asígnele esa plantilla y haga que la página sea privada.

Respondido 08 Jul 12, 21:07

global $wpdb; $results = $wpdb->get_results("SELECT * FROM {$wpdb->posts} WHERE ID IN (1, 2, 3) ORDER BY ID");

Puede usar eso en el archivo functions.php de su tema.

Respondido 04 Jul 12, 04:07

No veo ningún SQL en el archivo functions.php de mi tema o en Additional_functions.php, sin embargo, veo un montón en el archivo wp-includes/functions.php. ¿En qué bloque modificaría eso? El candidato más cercano parece estar en la función. do_enclose(). - iRyanBell

No importa, tío. Puede usar SQL en cualquier lugar que desee en PHP, siempre que tenga una conexión, y la tiene, porque tiene el objeto $wpdb. - partido

DEBE usarlo en functions.php, y definitivamente NO debe modificar la carpeta wp-includes en absoluto. - partido

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.