[Помогите] Выод записей в wp из другой бд, но на том же сервере.

Тема в разделе "Wordpress", создана пользователем r0nin, 9 апр 2012.

Статус темы:
Закрыта.
Модераторы: DzSoft, Sorcus
  1. r0nin

    r0nin Постоялец

    Регистр.:
    12 апр 2010
    Сообщения:
    80
    Симпатии:
    4
    Доброго дня всем. Подскажите запрос с помощью которого выводились бы записи из другой базы данных, которая распологается на том же серваке. Вообщем конечно можно было бы придумать отдельный файл с sql запрсом типа SELECT FROM и т.д. , но вроде бы в wordpress есть метод вывода данных из другой бд и это более выгодно по ряду причин.
     
  2. ReBeL

    ReBeL Злобный старикашка

    Регистр.:
    3 май 2006
    Сообщения:
    1.561
    Симпатии:
    849
    Принципиально в ВП используется одна база, но технически можно реализовать с помощью самописного плагина.
     
    r0nin нравится это.
  3. r0nin

    r0nin Постоялец

    Регистр.:
    12 апр 2010
    Сообщения:
    80
    Симпатии:
    4
    В сети есть методы реализации данной функции, но они какие-то неполные. В некоторых отображаются только заголовки и при клике на неё идёт на 404-ый. Также не получается сделать pagination. Итак.
    Например вот один из методов :
    PHP:
    $mydb = new wpdb('username','password','database','localhost');
    $rows $mydb->get_results("select Name from my_table");
    echo 
    "<ul>";
     
    foreach (
    $rows as $obj) :
      echo 
    "<li>".$obj->Name."</li>";
    endforeach;
    echo 
    "</ul>";
    Вот ещё один :
    PHP:
    /**
    * Instantiate the wpdb class to connect to your second database, $database_name
    */
    $second_db = new wpdb(DB_USERDB_PASSWORD$database_nameDB_HOST);
    /**
    * Use the new database object just like you would use $wpdb
    */
    $results $second_db->get_results($your_query);
    Также:
    PHP:
    $db1 mysql_connect'localhost''db_username''db_password' ) or die( mysql_error() ); 
     
    $sel1 mysql_select_db'db_name' ) or die( mysql_error() ); 
     
    $query "SELECT something FROM some_table";
     
    $res1 mysql_query$query$db1 );
     while ( 
    $array mysql_fetch_array$res1 ) ){
     
    print_r$array );
     }
     
                while(
    $row mysql_fetch_array($result)){
     
                echo 
    '<br />'.$row['result1'];
     
                echo 
    '<br />'.$row['result2'];
     
                echo 
    '<br />'.$row['result3'];
     
                echo 
    '<br />'.$row['result4'];
     
                echo 
    '<hr />';
     
                }
    Ещё один вроде:
    PHP:
    <?php
    include('/path/to/database/connection.php');
    ?>
     
    and that file looked like:
     
     
    <?php
    function runSQL($rsql) {
    $rootpasswd='yourPasswordHere';
    $user='yourUserHere';
    $db='yourDBhere';
    $dbcnx = @mysql_connect('localhost',$user,$rootpasswd,true);
    if (!
    $dbcnx) {
    echo 
    '<p>Unable to connect to the database server at this time.</p>';
    exit();
    }
    mysql_select_db($db$dbcnx);
    $result mysql_query($rsql) or die ('test');
    return 
    $result;
    mysql_close($connect);
    }
    ?>
     
    Then to loop through the results:
     
     
    $sql = "Your SQL statement goes here";
    $result = runSQL($sql);
    while ($row = mysql_fetch_array($result)) {
    Do stuff;
    }
    PHP:
    <?php
    function get_other_posts(){
        
    $wpdb_old wp_clone($GLOBALS['wpdb']);
        
    $wpdb_new = &$GLOBALS['wpdb'];   
          
    // All you have to care about following two lines
        
    $wpdb_new = new wpdb('your_db_username','db_password','new_db_name','localhost');
        
    $wpdb_new->set_prefix('wp_');
     
            
    //Now whatever function you'll call, it will use new database
        
    $posts get_posts('numberposts=5');
           
            
    //We are done so lets take the old wpdb back on its position
        
    $wpdb_new $wpdb_old;   
    }

    Также был вариант насчёт HyperDb - но он пока что у меня на рассмотрении, так как этот вариант может конфликтовать с mysql кешированием (w3 total cache).
    Вообщем головоломка :).
     
  4. xbreaker

    xbreaker Вверх ногами

    Регистр.:
    15 авг 2007
    Сообщения:
    245
    Симпатии:
    52
    Каким образом связаны запросы к другой базе и встроенная пагинация ВП? Если нужно выводить эти данные, то можно написать шаблон темы и добавить свои правила в $rewrite_rules
     
Статус темы:
Закрыта.