WordPress с короткими кодами - PullRequest
       1

WordPress с короткими кодами

1 голос
/ 21 октября 2011

У меня есть довольно простой шорткод для создания окна прорыва цитаты, которое называется:

[jasminesays quote="blah de blah"]

Dead easy.Однако, когда я пытаюсь вставить ссылку в нее, WordPress вообще не вернет цитату.Все остальные HTML, которые я пробовал, кажутся нормальными, они только выглядят так:

[jasminesays quote="blah <a href="#">de</a> blah"]

Что-то вроде

[jasminesays quote="blah <p>de</p> blah"]

отлично работает.

Код для обработки шорткода:

function mm_jasmineSays( $atts ) { 
extract( shortcode_atts( array(  
        "quote" => '',
       ), $atts ) );

return '<link href="'.get_bloginfo( 'template_directory' ).'/css/shortcodes.css" rel="stylesheet" type="text/css" />
        <div class="jasmine-says">
            <h2>Jasmine says...</h2>
            <div class="jasmine-says-quote">
                <p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-1.jpg" /></p>
                <p class="quote">'.$quote.'</p>
                <p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-2.jpg" /></p>
            </div>
        </div>';
}
add_shortcode('jasminesays', 'mm_jasmineSays');

, но я не думаю, что это проблема, я предполагаю, что WordPress отфильтровывает определенные вещи где-то, и мне нужно отключить это.У кого-нибудь есть идеи?

Спасибо за любую помощь.

Ответы [ 3 ]

1 голос
/ 21 октября 2011

С Кодекс WordPress

Возвращаемое значение функции обработчика шорткода вставляется в размещать вывод содержимого вместо макроса шорткода. Не забудьте использовать возврат, а не эхо - все, что отображается, будет выведено на браузер, но он не будет отображаться в нужном месте на странице.

Шорткоды анализируются после wpautop и wptexturize после форматирования был применен (но см. примечание ниже о 2.5.0 и 2.5.1 различия). Это означает, что выходной шорткод HTML не будет автоматически применяются фигурные кавычки, добавляются теги p и br и т. д. на. Если вы хотите, чтобы вывод вашего шорткода был отформатирован, вам следует вызовите wpautop () или wptexturize () напрямую при возврате вывода из вашего обработчика шорткода.

wpautop распознает синтаксис шорткода и пытается не переносить p или br теги вокруг шорткодов, которые стоят в одиночку на линии. Короткие коды, предназначенные для использования таким образом, должны обеспечивать вывод обернут в соответствующий тег блока, такой как p или div.

0 голосов
/ 23 июля 2013

почему бы не добавить опцию URL в шорткод?

Что-то вроде добавления:

    function mm_jasmineSays( $atts ) { 
extract( shortcode_atts( array(  
"quote" => '',
"url" => '',
), $atts ) );

И затем добавление

<a href="'.$url.'"> <h2>Jasmine says...</h2></a>

Возможно, это может сработатьили используя вместо этого вывод $ return:

global $post;
$output .= '<div class="jasmine-says">';
if($quote !== '')
$output .= '<a href="'.$url.'"><h2>Jasmine says...</h2>';
        $output .= '<div class="jasmine-says-quote">'
            $output .='<p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-1.jpg" /></p>';
            $output .='<p class="quote">'.$quote.'</p>';
            $output .='<p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-2.jpg" /></p>';
        $output .='</div>';
    $output .='</div>';
0 голосов
/ 22 декабря 2011

Не уверен, поможет ли это, но вы пытались изменить внешние кавычки на одинарные?

[jasminesays quote='blah <a href="#">de</a> blah']

или удаление внутренних кавычек?

[jasminesays quote="blah <a href=#>de</a> blah"]
...