2016-01-12 4 views
0

У меня есть короткий код, как это:WordPress виджет addng дополнительные р теги

function requestaquote($atts, $content = null){ 
    extract(shortcode_atts(array(
     'text'=>'', 
     'link'=>'', 
     'colour'=>'' 
     ), $atts));  
    return '<div class="speed-button"><img src="'.get_stylesheet_directory_uri().'/images/request-a-quote.jpg" alt="request a quote " /><p class="requstaquote">'.esc_attr($text).'</p></div><!--speed-button-->'; 
} 
add_shortcode('quotetext', 'requestaquote'); 

Это работает, за исключением, что его введение дополнительных <p></p> пар, как это:

<div class="textwidget"> 
<p></p> 
<div class="speed-button">...</div> 
<p></p> 
</div> 

который портя мое форматирование.

Я попытался remove_filter('the_content', 'wpautop');

Как я удалил эти <p></p> пары.

ответ

0

Вы можете pospone в wp_autop, потому что он обрабатывает до выхода SHORTCODE:

remove_filter('the_content', 'wpautop'); 
add_filter('the_content', 'wpautop' , 12); 

Или использовать cleanup_shortcode_fix() функцию:

function cleanup_shortcode_fix($content) { 
    $array = array('<p>[' => '[', ']</p>' => ']', ']<br />' => ']', ']<br>' => ']'); 
    $content = strtr($content, $array); 
    return $content; 
} 

add_filter('the_content', 'cleanup_shortcode_fix'); 
$string = preg_replace('/<p>s*</p>/', '', $string); 
add_filter('the_content', 'cleanup_shortcode_fix', 1); 

Источник: Remove auto added <p> from a page that has no literal content (uses shortcodes)

+0

вы можете использовать плагин, а также: https://wordpress.org/plugins/shortcode-empty-paragraph-fix/ – Milap

+0

Я думал, что ваша функция clean_up_shortcode_fix выглядит многообещающим. Я скопировал в funtions.php и получил ошибку: позвоните в undefined функцию preg_replace_() какие-нибудь идеи, пожалуйста? – maxelcat

+0

спасибо - теперь я получаю ... preg_replace(): Неизвестный модификатор 'p' – maxelcat

0

просто удалить новые линии, как кажется, что новые строки - это то, что делается в параграфах.

return str_replace("\r\n", '', $content); 
+0

извините - не работает - я думаю, что его добавили до и после фактического короткого кода – maxelcat

+0

Последнее и легкое дело в том, чтобы показать, что теги p не отображают. Не идеальное решение, но оно поможет –

Смежные вопросы