¿Cómo agregar los parámetros de ordenamiento php a la URL?

Estoy usando un complemento que habilita la calificación de comentarios para WordPress y quiero poder tener 4 enlaces en la publicación;

  • comentario más nuevo
  • comentario más antiguo
  • El mejor valorado
  • la más baja calificación

que cambiará el orden de los comentarios en consecuencia.

Sé que los enlaces deberían leer algo así como

  • www.example.com?orderby=comment_date&order=ASC
  • www.example.com?orderby=comment_date&order=DESC
  • www.example.com?orderby=comment_rating&order=ASC
  • www.example.com?orderby=comment_rating&order=DESC

El caso es que cuando se trata de php, soy un novato completo, así que me preguntaba qué tengo que cambiar / agregar aquí;

    ID;$mycomments=ckrating_get_comments("post_id=$post_id&status=approve&orderby=comment_date&order=ASC");} else$mycomments = null;wp_list_comments(array(), $mycomments);?>

para hacer que lo anterior funcione? ¿O necesito cambiar algo aquí?

 function ckrating_get_comments( $args = '' ) { global $wpdb; $defaults = array('status' => '', 'orderby' => 'comment_date', 'order' => 'DESC', 'number' => '', 'offset' => '', 'post_id' => 0); $args = wp_parse_args( $args, $defaults ); extract( $args, EXTR_SKIP ); // $args can be whatever, only use the args defined in defaults to compute the key $key = md5( serialize( compact(array_keys($defaults)) ) ); $last_changed = wp_cache_get('last_changed', 'comment'); if ( !$last_changed ) { $last_changed = time(); wp_cache_set('last_changed', $last_changed, 'comment'); } $cache_key = "get_comments:$key:$last_changed"; if ( $cache = wp_cache_get( $cache_key, 'comment' ) ) { return $cache; } $post_id = absint($post_id); if ( 'hold' == $status ) $approved = "comment_approved = '0'"; elseif ( 'approve' == $status ) $approved = "comment_approved = '1'"; elseif ( 'spam' == $status ) $approved = "comment_approved = 'spam'"; else $approved = "( comment_approved = '0' OR comment_approved = '1' )"; $order = ( 'ASC' == $order ) ? 'ASC' : 'DESC'; $orderby = (isset($orderby)) ? $orderby : 'comment_rating'; $number = absint($number); $offset = absint($offset); if ( !empty($number) ) { if ( $offset ) $number = 'LIMIT ' . $offset . ',' . $number; else $number = 'LIMIT ' . $number; } else { $number = ''; } if ( ! empty($post_id) ) $post_where = $wpdb->prepare( 'comment_post_ID = %d AND', $post_id ); else $post_where = ''; $comments = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE $post_where $approved ORDER BY $orderby $order $number" ); wp_cache_add( $cache_key, $comments, 'comment' ); return $comments; } 

Gracias

Tratar:

  
    < ?php if (function_exists(ckrating_get_comments)) { $order_by = mysql_real_escape_string((isset($_GET['orderby']) ? $_GET['orderby'] : 'comment_date' )); $order = mysql_real_escape_string((isset($_GET['order']) ? $_GET['order'] : 'ASC')); $post_id = $post->ID;$mycomments=ckrating_get_comments("post_id=$post_id&status=approve&orderby=" . $order_by . "order=" . $order);} else$mycomments = null;wp_list_comments(array(), $mycomments);?>

Para lograr lo que intentas hacer es modificar el primer código

 
    < ?php if (function_exists(ckrating_get_comments)) {$post_id = $post->ID;$mycomments=ckrating_get_comments("post_id=$post_id&status=approve&orderby=".(isset($_GET['comment_date']) ? $_GET['comment_date'] ? 'comment_date')."&order=".(isset($_GET['order']) ? $_GET['order'] ? 'ASC'));} else$mycomments = null;wp_list_comments(array(), $mycomments);?>

Cuando llama a esos para el enlace, los valores de los dos parámetros “comment_date” y “order” están en la variable global $ _GET.

Como mencionó Petro, su código no proporciona una forma de manipular los enlaces que solicitó, pero puede ser lo suficientemente simple como para que usted agregue.

Para implementar la consulta, cambie esto:

 "post_id=$post_id&status=approve&orderby=comment_date&order=ASC" 

a esto:

 "post_id=$post_id&status=approve&orderby=" . isset($_GET['orderby']) ? $_GET['orderby'] : 'comment_date' . "&order=" . isset($_GET['order']) ? $_GET['order'] : 'ASC'; 

Eso le permitirá pasar obtener vars. No estoy seguro si necesitas escapar algo aquí. WordPress puede manejar eso automáticamente. Aunque no tomes mi palabra.