
Código para generar un orden aleatorio
Publicado por clau (3 intervenciones) el 11/07/2016 11:04:47
Hola chicos, acabo de entrar en el foro porque no doy con la solución a algo que quiero hacer. Tal vez vosotros sí. Me encuentro con la necesidad de solucionar una pequeña funcionalidad para una web propia que quiero sacar a la luz. Tengo unas entradas hechas en Wordpress que aparecen siempre ordenadas por fecha de creación, y quiero que aparezcan por defecto de forma aleatoria.
Creo que debe ser muy simple de solucionar por alguien que domine un poco el tema. Yo no controlo PHP, he intentado cambiar cosas por intuición, pero no me aclaro. Os pego el código por si me podéis ayudar. Gracias!!
Ramon.
Creo que debe ser muy simple de solucionar por alguien que domine un poco el tema. Yo no controlo PHP, he intentado cambiar cosas por intuición, pero no me aclaro. Os pego el código por si me podéis ayudar. Gracias!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
* display the category page listing by ordering wise.
*/
function directory_category_filter_orderby($orderby){
global $wpdb,$wp_query;
if (isset($_REQUEST['directory_sortby']) && ($_REQUEST['directory_sortby'] == 'title_asc' || $_REQUEST['directory_sortby'] == 'alphabetical'))
{
$orderby= "(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_c' AND $wpdb->postmeta.meta_value = 'c') DESC, $wpdb->posts.post_title ASC";
//$orderby= "$wpdb->posts.post_title ASC,(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_c' AND $wpdb->postmeta.meta_value = 'c') DESC";
}
elseif (isset($_REQUEST['directory_sortby']) && $_REQUEST['directory_sortby'] == 'title_desc' )
{
$orderby = "$wpdb->posts.post_title DESC,(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_c' AND $wpdb->postmeta.meta_value = 'c') DESC";
}
elseif (isset($_REQUEST['directory_sortby']) && $_REQUEST['directory_sortby'] == 'date_asc' )
{
$orderby = "$wpdb->posts.post_date ASC,(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_c' AND $wpdb->postmeta.meta_value = 'c') DESC";
}
elseif (isset($_REQUEST['directory_sortby']) && $_REQUEST['directory_sortby'] == 'date_desc' )
{
$orderby = "$wpdb->posts.post_date DESC,(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_c' AND $wpdb->postmeta.meta_value = 'c') DESC";
}
elseif (isset($_REQUEST['directory_sortby']) && $_REQUEST['directory_sortby'] == 'stdate_low_high' )
{
$orderby = "(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id = $wpdb->posts.ID and $wpdb->postmeta.meta_key like \"st_date\") ASC";
}
elseif (isset($_REQUEST['directory_sortby']) && $_REQUEST['directory_sortby'] == 'stdate_high_low' )
{
$orderby = "(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id = $wpdb->posts.ID and $wpdb->postmeta.meta_key like \"st_date\") DESC";
}elseif(isset($_REQUEST['directory_sortby']) && $_REQUEST['directory_sortby'] == 'random' )
{
$orderby = "(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_h') ASC,rand()";
}elseif(isset($_REQUEST['directory_sortby']) && $_REQUEST['directory_sortby'] == 'reviews' )
{
$orderby = 'DESC';
$orderby = " comment_count $orderby,(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_c' AND $wpdb->postmeta.meta_value = 'c') DESC";
}elseif(isset($_REQUEST['directory_sortby']) && $_REQUEST['directory_sortby'] == 'rating' )
{
$orderby = " (select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id = $wpdb->posts.ID and $wpdb->postmeta.meta_key like \"average_rating\") DESC,(select distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_c' AND $wpdb->postmeta.meta_value = 'c') DESC";
}else{
$orderby = " (SELECT distinct $wpdb->postmeta.meta_value from $wpdb->postmeta where ($wpdb->posts.ID = $wpdb->postmeta.post_id) AND $wpdb->postmeta.meta_key = 'featured_c' AND $wpdb->postmeta.meta_value = 'c') DESC, $wpdb->posts.post_date DESC";
}
return $orderby;
}
/*
Ramon.
Valora esta pregunta


0