Оказывается, до сих никто не придумал (либо же не поделился для гугла кодом) решения, которое бы позволяло брать все посты сети вордпрес и выдавать самые свежие в хронологическом порядке. С кучи перебранных мною форумов нашлось только решение которое сначала создает массив обновленных блогов а потом прокручивает их в цикле, выводя по одной записи из каждого. Но при этом никак не получается хрнологический список постов всех сайтов сети. Ибо в одном блоге добавился один пост, в другом – пять. Решение только в том, чтобы связывать все таблицы с постами всех сайтов воедино и формировать вывод уже оттуда.
Для этого создал заготовку, которая как-бы рабоатет
$allposts = $wpdb->get_results("
(SELECT ID, post_date, post_content, post_title, post_excerpt, post_status, guid, post_type FROM wp_7_posts WHERE post_status = 'publish' AND post_type = 'post' )
UNION ALL
(SELECT ID, post_date, post_content, post_title, post_excerpt, post_status, guid, post_type FROM wp_1_posts WHERE post_status = 'publish' AND post_type = 'post' )
ORDER BY post_date DESC LIMIT 5
");
foreach ($allposts as $post) {
setup_postdata($post);
(Кстати, тут интересно почему при запросе через звездочку * оно не работает)
Теперь бы надо бы не ручками подключать таблицу с постами каждого блога/сайта, а как-то автоматизировать.
Чтобы получить айди всех наявных сайтов в сети есть такой кусок
$query = "SELECT blog_id FROM $wpdb->blogs WHERE blog_id !='1'";
Но как теперь все эти запросы с юнионами прокрутить в цикле? Т.е. по сути надо в SQL-запрос втулить перебор массива. Как такое можно реализорвать? Гугл не помогает, тут без чудого опыта не обойтись…
Не только придумал, но и успешно продает 🙂
http://premium.wpmudev.org/project/recent-global-posts-widget
В какое, простите, место, sql Вы хотели вставить звездочку?
Ну вот сюда
А что, так низзя? 🙂 Я просто заметил, что звездочка не работает если цикл постов выводить через страндартный луп со стандартными функциями, а при цикле, в котором посты выводятся путем перебора массива, кажись, все ок.
Ну, мы ж не знаем что они там написали. Как покупать-то когда нельзя пощупать? Может там то же самое что и в открытом доступе лежит и по принципу работы не подходит!? Мы и сами можем нагородить при желании и помощи Ю.Б. 😆
Все почти отлично работает. Проблема возникла только с ссылкой на пост (догадываюсь почему но сказать точно не могу) и пришлось юзать
$post->guid. Так же мне непонятно почему в таком случае при сипользовании the_content("далее") не рабоатет обрезка поста.
Ни и еще несколько вопросов надо решить:
1/ Поскольку мы скорее всего хотим отображать контент со всех блогов (люди по разному форматируют свои записи) в одном месте в одних стилях, надо научиться пользоваться регуляркой чтобы вырезать из контента одну картинку (сам адрес картинки) и прикрутить к ней свои стили (текст можно подключить через excerpt)
2/ Придумать как с помощью той же регулярки из ссылки на пост получить адрес блога (должно быть легко), а уже их него каким-то макаром получить название блога (сложно, функций по получению массива с инфой блога по его слагу не встречал, наверное придется лезть с этим слагом в базу данных и там искать 🙁 )
Буду очень признателен за подсказки, оптимизацию и т.д.
Нельзя, если у таблиц, склеенных UNION, разное количество полей. А вообще можно. По крайней мере, в 5.1 работает без вопросов.
Это Вы не знаете, а я знаю 😛
Не знаю как сейчас, а раньше оно соответствовало ЧПУ на момент создания поста. При смене ЧПУ там фигня получается.
Купили? )))
Ну, другого выхода я пока не придумал. Если использовать стандартуную функцию линка то движек, все равно, похоже, смотрит в каком блоге происходит вывод и поставляет адрес этого блога к слагу поста (который не с этого блога )) )
А когда-то, помню, вы меня подкалывали по поводу указанной мной версии движка 😉
Не, подсмотрел у того, кто купил 🙂
Вышеупомянутому плагину для работы нужны дополнительные прибамбасы. WPMUшники используют плагин Post Indexer, который собирает в отдельную таблицу все посты со всех блогов (фактически дублирует), дополняя их всем чем можно, в том числе, и пермалинками. Поэтому у них выборка получается очень лёгкая и быстрая. Аналогично с термами – всё валят в кучу.