Как создать шорткод для вставки изображений в комментариях

Я уже писал о шорткодах. Например, о том, как использовать шорткод постоянной, вечной внутренней ссылки, причем такой, которая в будущем не изменит свое значение, как бы вы не меняли структуру блога. Или о том, как самостоятельно сделать шорткод с помощью плагина Shortcoder. В общем, всем понятно, что шорткоды — очень удобный инструмент, намного облегчающий работу с блогом, причем не только блоггеру, но и посетителям. Часто у посетителей блога возникают проблемы со вставкой картинок в комментарии. Давайте облегчим им эту задачу, и без посторонних плагинов создадим простой шорткод, позволяющий вставлять изображения в комментарии даже самым неискушенным пользователям.

Для этого воспользуемся файлом functions.php — создадим в нем функцию, преобразующим ссылку на картинку в саму картинку. Откройте этот файл и вставьте в него такой код:

//IMG shortcode start
function ImgShortcode($atts, $content = null) {
	extract(shortcode_atts(array(
	), $atts));
	return '';
}
add_shortcode("img", "ImgShortcode");

function embed_images($content) {
	$content = preg_replace('/[img=?]*(.*?)([/img)?]/e', '"<a href="$1"><img src="$1" alt="Как создать шорткод для вставки изображений в комментариях" /></a>"', $content);
	return $content;
}

function embed_image_instructions($id) {
	echo '
	<span style="font-style:normal;padding:2px;float:right;margin:6px">
	<label for="subscribe" style="margin:0 5px 5px 5px;vertical-align:top;font-size:11px">подписка</label>
	</span>
	<span style="font-style:normal;padding:2px;float:right;margin:6px;font-size:11px">
						<span><a title="правила" target="_blank" href="/rules#rules04" rel="noopener noreferrer">?</a></span>
						<span><a title="помощь" target="_blank" href="https://n-wp.ru/category/questions/" rel="noopener noreferrer">+</a></span>
	</span>
	';
	return $id;
}

add_filter('comment_text', 'embed_images');
add_action('comment_form', 'embed_image_instructions');
//IMG shortcode end

Этот код создает функцию, которая создает шорткод [img], с помощью которого можно вставлять картинки в комментарии и содержимое постов, причем я специально усложнил шорткод таким образом, чтобы картинка являлась ссылкой на саму себя — это упрощает копирование ссылки на картинку для других, открывая изображение в полном размере в отдельном окне.

Пример:

[img]https://n-wp.ru/files/default.jpg[/img]

Использовать этот шорткод очень легко: [img]http://n-wp.ru/files/default.jpg[/img]

Этот шоркод выведет изображение default.jpg, сделав его ссылкой на себя же. Пользуйтесь!

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. vollirik

    Проблема.

    Вот код:

    //Strong shortcode start
    
    function StrongShortcode($atts, $content = null) {
        extract(shortcode_atts(array(
        ), $atts));
        return '<strong>'.$content.'</strong>';
    }
    add_shortcode("strong", "StrongShortcode");
    
    //Strong shortcode end
    
    //Italic shortcode start
    
    function ItalicShortcode($atts, $content = null) {
        extract(shortcode_atts(array(
        ), $atts));
        return '<em>'.$content.'</em>';
    }
    add_shortcode("em", "ItalicShortcode");
    
    //Italic shortcode end
    

    Так вот, проблема в том, что в случае использования в комментарии вложенности шорткодов, работать будет только один из них.

    Пример:

    [img]http://iceimg.com/i/bd/31/3a6abb2c4b.jpg[/img]

    Как победить?

    Ответить