Кросспостинг из WordPress в SMF 2.0 RCх
Дата: 26 мая, 2011 год
Есть у одного моего знакомого блог на WordPress. Недавно он попросил меня поставить еще и форум — на это были свои причины. Я, как истинный приверженец SMF, посоветовал ему этот движок, и сам же его ему и поставил :) А дальше знакомый захотел, чтоб его посты из WP автоматом дублировались на форуме SMF…
Ну, подумал я, раз хочет, значит сделаем, чего уж там. Тем более, что у меня уже есть готовый скрипт постинга в SMF, осталось только написать небольшой скрипт выдирания постов из WP.
Но, оказалось все намного проще! Случайно я наткнулся на плагин для WP, который позволяет делать тоже самое, что я хотел написать самостоятельно, а именно — автоматически добавлять новую тему с содержанием поста в SMF при его публикации в WordPress. Плагин называется WPSMF, последнее обновление правда было почти год назад, тем не менее, он работает с последними версияами SMF 2.0 RC5 и WP 3.1.2 (в момент написания поста уже была доступна версия 3.1.3, так что 100% гарантии, что плагин работает с самой последней версией WP у меня уже нет).
Плагин много чего позволяет делать, в том числе и экспортировать посты из WP в SMF, обновлять пост в SMF при его обновлении в WP, и даже синхронизировать комментарии! Последнее нам было не нужно, но фича сама по себе интересная. Вообщем, надо создать спец-рубрику в WP, из которой все посты будут кросспостинговаться (гыг :)) в SMF в определенный подфорум.
Ограничение одно, но оно существенное и вполне логичное — форум и блог должны находиться в одном пространстве доступа. То есть, чтобы можно было указать путь относительно обеих CMS-систем, он задается в настройках плагина.
Все было замечательно с этим плагином, кроме одного — хотелось настраивать результат вывода в топике SMF, а именно — возможность делать кросспост только анонсов (до тэга «more»), а также оставлять ссылку на полную версию поста, расположенного на WP. Таких фич не было, и мне пришлось поковырять код плагина.
В файле /wp-content/plugins/wpsmf/posts.php в самом начале идет обработка тела поста перед его публикацией в SMF. Находим такую строчку:
$body = '[html]'.$body.'[/html]';
Я взял ее для удобства, в ней идет обрамление текста поста ВВ-кодом html. Перед этой строчкой вы можете делать все что угодно с текстом поста. В моем случае я вырезал все, что идет после «more» и добавил ссылку на полную версию в блоге:
$body = explode("<!-more->", $body); $body = $body[0].'<br><br><br><a href="http://blog.ru/'.$queried_post -> post_name.'/" target="_blank">читать полную версию поста на блоге Иванова</a>'; $body = '[html]'.$body.'[/html]';
Довольно странно, почему этих фич небыло в плагине по умолчанию — довольно полезно ведь.
Еще по теме: WordPress, кросспостинг
Категория: Хаки и доработки
спасибо за статью
а как можно сделать тоже самое только smf на одном сервере а wp на другом?
С помощью данного плагина — нет. Ну а в принципе — да, сделать можно, но это надо самому писать скрипты.
Как с вами связаться?
Необходима ваша помощь по интеграции.
[email protected]
Отписал, спс
Вот тоже задался целью сделать блог + форум.
Однако не знаю как. Сайтостроитель я неопытный. Попробовал что-то сделать, но не знаю правильно ли.
Написал письмо, надеюсь ответите.
Я всем отвечаю, но не всем помогаю)
Здравствуйте.
У меня возникла идея использовать данный плагин вместе с плагином smf2wp (надеюсь, известен такой). Т. е. убрать всю эту возню с ID пользователей, которые создали тему/ответили в ней, что бы не выставлять их с каждым постом при экспорте.
Можете дать пару советов\направлений куда копать или как? Заранее благодарен, надеюсь, что Вы загляните сюда как-нибудь.
Тут сложно что-либо советовать конкретное. Надо ставить чистые SMF и WP, установить и настроить оба плагина, и тестировать, допиливать, ковырять код.
Понятно. Кстати, как обнаружилось, при одновременной работе данные плагины конфликтуют между собой. Если включен SMF2WP, при попытке включить WPSMF вознкает фатальная ошибка:
Warning: require_once(/QueryString.php) [function.require-once]: failed to open stream: No such file or directory in Z:\home\wfas-aoc.com\www\forum\SSI.php on line 62
Fatal error: require_once() [function.require]: Failed opening required ‘/QueryString.php’ (include_path=’.;C:\php\pear’) in Z:\home\wfas-aoc.com\www\forum\SSI.php on line 62
А если наоборот, то SMF2WP сообщает:
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in Z:\home\wfas-aoc.com\www\wp-content\plugins\smf2wp\smf2api.php on line 40
Кажется, что совместно их использовать не получится. Придется или добавлять один из плагинов в другой, либо забыть эту идею.
Ну, как я говорил, надо ковырять и тестить. В первом случае не определена переменная $sourcedir, с помощью которой инклудятся различные библиотеки в SSI.php, и я бы с этого начал разбор полетов.
Ну да, верно. Буду смотреть что с ними не так.