Свои блоги (стандалоны) на wordpress. Удобняем

picСейчас я распишу неправильный, но очень быстрый и удобный способ публикации в блог на wordpress.

Ососбенно пригодится тем кто ведёт дайджест и скорость и удобство публикации важны. Для того, чтобы разместить пост надо будет всего-то пометить нужный кусок. Чистки, фильтры и прочее будут происходить сами. Рекомендую хотя бы пролистать, что бы знать, что так можно.

Дело в том, что для публикации в wordpress блоги есть множество доступных вариантов. Это и новые записи через стандартную форму. И через semagic. И через родной букмарклет wordpress. Вот этот самый букмарклет мы и будем “подправлять.

Во первых что это такое. Если зайти на страницу администрирования и выбрать “Инструменты”, то можно будет найти этот самый букмарклет.

Адрес, где находится эта страница (если не можете найти в меню) – будет такой:

http://ваш_сайт/wp-admin/tools.php

logo
Надо зайти на эту страницу и просто перетащить “кнопку” на панель с вашими закладками.

logo
Далее – можно просто переименовать эту закладку как вам удобно

logo
Теперь просто заходим на страницу, на которой есть что-то для нас интересное, помечаем текст, который хотим разместить у себя и нажимаем на ту самую “перетащенную” кнопочку.

logo
Открывается окно. Обратите внимание, что помеченный текст и ссылка на всю страницу вставляются автоматически. Вам осталось только дописать свой комментарий (если хотите), проставить рубрики и метки и нажать “Опубликовать”. Пост появится в вашем блоге.

Теперь зачем нам надо вообще что-то менять и в чём тут дополнительное удобство?

Читаем дальше :)

При нажатии на ту самую перетащенную “кнопку” вызывается код из стандартной поставки wrodpress. По идее, конечно надо разобраться как подключаться всяческие фильтры и делать исправления там. Мне – лень. Поэтому мы поступим немного по другому. Проще.

Берём и создаём копию файла

http://nastolkus.com/wp-admin/press-this.php

например в

http://nastolkus.com/wp-admin/press-this2.php

Это необходимо сделать для того, чтобы если вы будете обновлять wordpress – ваши изменения не были бы затёрты.

logo
Теперь, надо изменить ссылку “перетащенной кнопочки”. Для этого наводим на неё мышь, кликаем правой кнопкой, выбираем “редактировать” и меняем в длинной строке URL – press-this.php на press-this2.php

И сохраняем результат. Теперь мы можем смело редактировать файл press-this2.php.

Для чего это всё надо? Для того, чтобы быстро сделать удобный механизм отфильтровывания всякого мусора.

Например. Многие сайты добавляют в заголовок всякие “вспомогательные слова”, которые нам совершенно не интересны. Возьмём сайт

http://tesera.ru/user/oranged/thought/139353/

Если попробовать использовать стандартный механизм публикации (как прямо сейчас на этом этапе) – вы увидите, что к заголовку и ссылке дописан совершенно не нужный для нас “довесок”.
logo

Зачем нам каждый раз это удалять? Или оставлять в своём блоге совершенно ненужную информацию? Было бы хорошо, если бы подобное удалялось само.

Для этого открываем файл

http://nastolkus.com/wp-admin/press-this2.php

и редактируем кусочек.

...
function press_it() {
...
// For submitted posts.
if ( isset($_REQUEST['action']) && 'post' == $_REQUEST['action'] ) {
	check_admin_referer('press-this');
	$posted = $post_ID = press_it();
} else {
	$post = get_default_post_to_edit('post', true);
	$post_ID = $post->ID;
}
// Set Variables
$title = isset( $_GET['t'] ) ? trim( strip_tags( html_entity_decode( stripslashes( $_GET['t'] ) , ENT_QUOTES) ) ) : '';
// добавляем
$title = str_replace(' | все о настольных играх - tesera.ru','', $title);
$title = str_replace(' « Настольные игры в Латвии','', $title);
...
$title = str_replace(' | meeple','', $title);
$title = str_replace(' - Настольные игры: Nастольный Blog - Всё о настольных играх на русском языке','', $title);
// сюда
$selection = '';
if ( !empty($_GET['s']) ) {
	$selection = str_replace(''', "'", stripslashes($_GET['s']));
	$selection = trim( htmlspecialchars( html_entity_decode($selection, ENT_QUOTES) ) );
}

Весь фокус в функции str_replace(‘что поменять’,’на что поменять’). Т.е. мы берём все строки, которые нам могут встречаться и добавляем сюда.
Теперь, если в заголовке встретится строка “из этого списка” – она будет удалена автоматически. Вам ничего для этого не надо будет делать.

Идём дальше. Если уж у нас есть полный контроль над происходящим, то давайте довавим полезностей :) Допустим я хочу, чтобы когда я помещаю что-то в блог – текст, который я выбрал для цитирования был оформлен как “цитата”. Ок, давайте это сделаем :)

Чуть-чуть ниже:

$title = str_replace(' | meeple','', $title);
$title = str_replace(' - Настольные игры: Nастольный Blog - Всё о настольных играх на русском языке','', $title);
// сюда
$selection = '';
if ( !empty($_GET['s']) ) {
	$selection = str_replace(''', "'", stripslashes($_GET['s']));
	$selection = trim( htmlspecialchars( html_entity_decode($selection, ENT_QUOTES) ) );
}
if ( ! empty($selection) ) {
//vdas2
//	$selection = preg_replace('/(\r?\n|\r)/', '</p><p>', $selection);
//	$selection = '<p>' . str_replace('<p></p>', '', $selection) . '</p>';
//vdas
        if(substr($selection, -1) == '.'){
         $selection = substr($selection, 0, strlen($selection)-1);
        }
	$selection = '<div class="vdquote"><blockquote>"…'.str_replace('<p></p>', '', $selection).'…"</blockquote></div>';
}

Обращаем внимание на предпоследнюю строку. Я разместил вокруг $selection (т.е. выделенного на чьём-то сайте текста) тэг <blockquote> и многоточия.

logo
и теперь, когда я просто отмечаю текст и нажимаю “перетащенную кнопку” – от заголовков отрежется мусор, а то, что я пометил – разместится красиво.

Ну, давайте пойдём ещё дальше. А почему бы не проставлять специальные метки, если я что-то размещаю у себя с какого-то сайта?

Давайте добавим проверочку.

		$editor_settings = array(
			'teeny' => true,
			'textarea_rows' => '15'
		);
		$content = '';
		if ( $selection )
			$content .= $selection;
		if ( $url ) {
			$content .= '';
			if ( $selection )
/*				$content .= __('via '); */
				$content .= '<sup>via</sup> ';
//vdas
 if(strpos($url, 'meeple.com.ua')) $content .= "<img src='http://host.vdasus.com/bgic/ostap.png' alt='Остап'>&nbsp;";
 if(strpos($url, 'snowbody')) $content .= "<img src='http://host.vdasus.com/bgic/snow.png' alt='sNOwBODY'>&nbsp;";
...
 if(strpos($url, '2fishki')) $content .= "<img src='http://host.vdasus.com/bgic/2f.png' alt='2 fishki'>&nbsp;";
 if(strpos($url, 'boardgameslv')) $content .= "<img src='http://host.vdasus.com/bgic/bglv.png' alt='Nastolki v Latvii'>&nbsp;";
			$content .= sprintf( "<a target='_blank' rel='nofollow' href='%s'>%s</a>.", esc_url( $url ), esc_html( $title ) );
		}
		remove_action( 'media_buttons', 'media_buttons' );
		add_action( 'media_buttons', 'press_this_media_buttons' );
		function press_this_media_buttons() { 

И теперь что произойдёт? Если в ссылке откуда я что-то у себя размещаю присутствуют символы, например, meeple.com.ua, то к тексту автоматически добавится какая-то, заранее мной выбранная, картинка.

Смотрите как получается:

logo

Я просто пометил то, что хочу у себя разместить и нажал на “перетащенную кнопку”. Текст, который я пометил красиво помечен “цитированием”. Из заголовков и ссылок убран ненужный мусор. И, поскольку ссылка с ресурса “из списка” – автоматически добавилась оранжевая картинка именно того ресурса откуда я что-то цитирую…

Не совсем понятно будет ли вам понятно :) В основном это для чуть более продвинутых, но если вы будете делать по моей инструкции, то ничего не испортите. В худшем случае опять сделаете копию файла press-this.php в press-this2.php и всё вернётся к изначальному состоянию.

Код press-this относится ТОЛЬКО к этой “перетащенной кнопке” и, как бы вы его не меняли – всё остальное будет работать так же как и раньше.

Если непонятно – спрашивайте…

Как это выглядит на практике вы можете посмотреть на моём nastolkus.com (http://nastolkus NULL.com)