Не совсем понятно, что за шорткод, его тип, как он выглядит и для чего он нужен.
Если симметричный, то им же и оформляйте кусок контента внутри него, если одиночный, то можно разбить контент по нему и оформлять что до, что после него 🙂
Шоткод — не симметричный, выводит галерею. Если его вставить до текста — то все работает как и требовалось. Но (внезапно) стала необходима вставка текста и до шоткода-галереи. Но есть один нюанс — текст до шоткода должен иметь другие css классы.
Сегодня подумал, что можно текст до шоткода-галереи и текст после оформлять в парный шоткод, который будет добавлять к нему необходимую верстку.
Вот теперь думаю — так нормально или же есть какой «хитрый способ», который позволяет определить текст до вставки шоткода и текст после.?
Примерно так
$content = 'Это контент до шорткода. [shortcode id="my"] Это контент после шорткода';
$contents = preg_split( '#(\[shortcode.*\])#', $content, NULL, PREG_SPLIT_DELIM_CAPTURE );
на выходе массив, 0 — до шорткода, 1 — шорткод, 2 — после..
Надеюсь, идея понятна? )
Абсолютно. Спасибо, попробую — отпишусь о результатах.
Что-то пошло не так…
Если я вызываю одиночный (непарный) шоткод, то у него $content
всегда будет пустой. Т.е. внутри функции шоткода я не могу разделить контент на «до и после».
Может попробовать фильтр для the_content()
использовать?
Сделал через фильтр, но не уверен — правильно ли это.
Код примерно такой.
add_filter('the_content', 'show_me_real_content');
function show_me_real_content($content){
$contents = preg_split( '#(\[myshortcode.*\])#', $content, NULL, PREG_SPLIT_DELIM_CAPTURE );
$content = '<div class="cls1">' . $contents[0] . '</div>'
$content .= do_shortcode($contents[1]);
$content .= '<div class="cls2">' . $contents[2] . '</div>'
return $content;
}
Функцию написал «примерно», чтобы отобразить суть. К опечаткам не придираться)
Так, как сделано сейчас — работает. Но у меня вопрос — можно ли так делать? Это нормально? 🙂
Может быть эта информация будет интересна и полезна?:
Есть плагин «Шорткоды» (Shortcodes Ultimate). К нему можно за 15$ купить расширение, с помощью которого можно создавать свои, любые произвольные шорткоды.
ПОДРОБНОСТИ
adminstrelok
спасибо) Допиливать WP могу сам, но иногда стает вопрос не о том, чтобы создать что-то, а «можно ли так делать в WP? может есть другой путь? может я неправильно использую инструменты WP?»
Но в любом случае спасибо )
Вопрос решен, всем спасибо.