Подправить скрипт вывода ссылок

Статус
В этой теме нельзя размещать новые ответы.

bravilor

Постоялец
Регистрация
25 Июл 2007
Сообщения
440
Реакции
158
Есть скрипт нерандомного вывода ссылок на страницу, хотелось бы чтобы он каждый раз выводил на странице рандомные ссылки, как это сделать? Или может у кого нить есть готовый вариант?
Код
PHP:
<?php

global $wpdb, $post;

// How many links do you want to make
$c=5;



$post_id = $post->ID;
$post_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE ID > '$post_id' AND post_type = 'post' AND post_status = 'publish'");

if ($post_count >= $c)
{
$posts = $wpdb->get_results("SELECT ID, guid, post_title FROM $wpdb->posts WHERE ID > '$post_id' AND post_type = 'post' AND post_status = 'publish' LIMIT 10");
}
else
{
$posts = $wpdb->get_results("SELECT ID, guid, post_title FROM $wpdb->posts WHERE ID > '$post_id' AND post_type = 'post' AND post_status = 'publish' LIMIT 10");


$limit = $c - $post_count;
$posts = array_merge($posts, $wpdb->get_results("SELECT ID, guid, post_title FROM $wpdb->posts WHERE ID > 0 AND post_type = 'post' AND post_status = 'publish' LIMIT $limit"));
}



// Print links-block

for ($i = 0; $i < $c; $i++)
{

  $object = $posts[$i];


  // getting seo-title (to use instead of post header)

  $ppp = $object->ID;

  if ($ppp > 0) 
    {
    $purl = $object->guid;
    $pheader = $object->post_title;
    $ptitle= $wpdb->get_var("SELECT meta_value FROM `wp_postmeta` WHERE meta_key = 'title_tag' AND post_id = $ppp");
    if ($ptitle =="") { $ptitle=$pheader;} 
    echo "\r\n\r\n<a href=\"$purl\" title='$pheader'>\r\n$ptitle</a> &nbsp;&nbsp;&nbsp;| ";
    }

}

?>
 
  • Заблокирован
  • #2
Добавь в sql запрос
Код:
ORDER BY RAND()
 
Непонятно только, нафиг там два запроса, так будет логичнее:
PHP:
<?php
    global $wpdb, $post;
    // How many links do you want to make
    $c=5;
    $post_id = $post->ID;
    $post_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE ID > '$post_id' AND post_type = 'post' AND post_status = 'publish'");
    $posts = $wpdb->get_results("SELECT ID, guid, post_title FROM $wpdb->posts WHERE ID > '$post_id' AND post_type = 'post' AND post_status = 'publish' LIMIT 10 ORDER BY RAND()");
    if ($post_count < $c) {
        $limit = $c - $post_count;
        $posts = array_merge($posts, $wpdb->get_results("SELECT ID, guid, post_title FROM $wpdb->posts WHERE ID > 0 AND post_type = 'post' AND post_status = 'publish' LIMIT $limit"));
    }
    // Print links-block
    for ($i = 0; $i < $c; $i++)
    {
        $object = $posts[$i];
        // getting seo-title (to use instead of post header)
        $ppp = $object->ID;
        if ($ppp > 0) {
            $purl = $object->guid;
            $pheader = $object->post_title;
            $ptitle= $wpdb->get_var("SELECT meta_value FROM `wp_postmeta` WHERE meta_key = 'title_tag' AND post_id = $ppp");
            if ($ptitle =="")
                $ptitle=$pheader;
            echo "\r\n\r\n<a href=\"$purl\" title='$pheader'>\r\n$ptitle</a> &nbsp;&nbsp;&nbsp;| ";
        }
    }
?>
 
Ага, так лучше, в первом коде когда добалял ORDER BY RAND() первые две ссылки не рандомились, теперь все заработало, сенкс.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху