Today I set up plugin “LJ crosspost” for posting directly from wordpress to livejournal. Unlike Live+Press which has many interesting features, it’s not so customizable. However, it is enough for me and it works a little faster then the Live+Press. And finally, it works with russian language)))

But I missed one feature – it’s quite annoying that you can only post to livejournal the same text as to wordpress. I wanted to have two quite different variants of text. So I modified plugin a little to work with excerpts.

If you need the same feature – just replace the first code fragment with the second. You can check cross-posted entry here.


Решила всё-таки дублировать посты из своего основного блога в ЖЖ. Хотя бы для оповещения. Отвечать там мне не надо.

По поводу процесса: есть два плагина, которые реализуют такой кросспост.
1) Live+Press очень красивый, со множеством настроек, полностью заменяющий интерфейсы жж… Только вот с русским языком он не работает. А я так и не смогла его отстроить для этого. В интернете тоже решений нет. Обещают в следующей версии сделать поддержку.
2) LJ crosspost. Не такой красивый, меньше опций. Однако работает по ощущениям быстрее и не так заси… засоряет базу :) И вдобавок работает с русским языком. Сразу и без ковыряния. Ещё один плюс – для него есть русификация. Ссылку искать не буду так как у меня все интерфейсы на английском.

Единственный момент – LJ crosspost имеет два варианта:
1) Целиком копировать запись в жж
2) Копировать только до вордпрессовского тэга “<!–more–>”

А мне хотелось, чтобы записи могли существенно различаться. Для этого мы можем использовать такое поле в wordpress как excerpt. По-русски это что-то вроде краткого содержания. Итак, мы пишем это содержание – а оно появляется в жж. Удобнее ведь? Сделать элементарно.
Для этого открываем файл “lj_crosspost.php” (это там единственный php файл), после чего берём фрагмент

609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
if(!$post->post_password) {
		// and if there's no <!--more--> tag, we can spit it out and go on our
		// merry way
		if(strpos($post->post_content, "<!--more-->") === false) {
			$the_event .= apply_filters('the_content', $post->post_content);
		}
		else {
			$content = explode("<!--more-->", $post->post_content, 2);
			$the_event .= apply_filters('the_content', $content[0]);
			switch($options['more']) {
			case "copy":
				$the_event .= apply_filters('the_content', $content[1]);
				break;
			case "link":
				$the_event .= sprintf('
 
<a href="%s#more-%s">', get_permalink($post_id), $post_id) .
					__('Read the rest of this entry &raquo;', LJXP_DOMAIN) .
					'</a>
 
';
				break;
			case "lj-cut":
				$the_event .= '<lj-cut text="' .
					__('Read the rest of this entry &amp;raquo;', LJXP_DOMAIN) .
					'">' . apply_filters('the_content', $content[1]) . '</lj-cut>';
				break;
		}
		}
	}

И жестоко заменяем на

609
610
	if(!$post->post_password)
$the_event=apply_filters('the_content',$post->post_excerpt).'<a href="'.get_permalink($post_id).'#more-'.$post_id.'">Read the rest of this entry &raquo;</a>';

Номера строк идентичны. Думаю, и в русской версии так же.
И получаем то же, что и у меня.
Примеры кросспоста в лайвжорнал – здесь, в моём жж.

Дальше буду рассказывать другие решения для миграции с livejournal.