нежелательные теги P в shortcode, задержка wpautop не работает

Как и другие, у меня возникли проблемы с WP, добавляющими в мой код нежелательные p-теги. У меня есть короткий код, который я создал, чтобы просто просто выплюнуть свой javascript и html, когда я его использую. Все работает отлично, за исключением того, что WP разбивает каждый в p-тегах. Добавление нескольких строк пустого нежелательного пространства. Я попробовал решение здесь: автоматически добавила brs и абзацы? но безрезультатно. Вот что я имею в моем файле functions.php

<?php remove_filter( 'the_content', 'wpautop' ); add_filter( 'the_content', 'wpautop' , 12); remove_filter( 'the_excerpt', 'wpautop' ); /***************/ /**ShortCodes**/ /**************/ /*** Form to contact Us **/ function contact_us() { return <<<HTML <P> Here's the low down on what to do </p> <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css"/>\n <link rel="stylesheet" href="http://studiocloud.com/css/validationEngine.jquery.css" type="text/css"/>\n <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>\n <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script>\n <script src="http://cloudforms.co/js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"></script>\n <script src="http://cloudforms.co/js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"></script>\n <script type="text/javascript" src="http://cloudforms.co/js/html5placeholder.jquery.js"></script>\n <form action="" id="signupform" name="signupform"> <input type="hidden" id="tid" name="tid" value=""/> <input type="hidden" id="scid" name="scid" value="TPN02L48KAVJKVRD"/> <input type="hidden" id="fid" name="fid" value="392"/> <div class="box" > <fieldset class="field_set""><legend>Contact Us For More Information</legend> <label><span>First Name *</span><input type="text" id="firstName" name="firstName" class="validate[required] input_text" placeholder="First Name" ></label> <label><span>Last Name *</span><input type="text" id="lastName" name="lastName" class="validate[required] input_text" placeholder="Last Name" ></label> <label><span>Phone</span><input type="text" id="workPhone" name="workPhone" class="validate[optional] input_text" placeholder="Phone" ></label> <label><span>Email *</span><input type="text" id="email" name="email" class="validate[required,custom[email]] input_text" placeholder="Email" ></label> <label><span>Comments *</span><textarea name="item5" id="item5" class="message" placeholder="Comments" ></textarea></label> <label><span></span>* Required Fields</label> <label><input type="button" id="item7" name="item7" onClick="processContactUs(event)" class="button" value="Submit" ></label> </fieldset> </div> </form> <div class="modal"><!-- Place at bottom of page --></div> HTML; } add_shortcode('contact_us','contact_us'); 

есть идеи? использование \ n, похоже, избавляется от нежелательных ярлыков, которые я получал, но теперь все еще получаю теги p. Благодарю.

Простое решение состоит в том, чтобы не дать wpautop ничего, чтобы пожевать.

 function contact_us() { $str = "<p>Here's the low down on what to do</p>"; $str .= '<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css"/>'; $str .= '<link rel="stylesheet" href="http://studiocloud.com/css/validationEngine.jquery.css" type="text/css"/>'; // etc $return $str; } 

Сгенерированный код не будет отформатирован, но нет причин, по которым это должно быть. Мы давно прошли статические HTML, по крайней мере, я («Спасибо» лордам Кобола), где имело место такое форматирование. Теперь все, что отформатировано, просто лишние символы, которые должны перемещаться по проводу.

Повторная настройка фильтров WP по умолчанию может иметь нежелательные последствия (у меня были некоторые проблемы с некоторыми плагинами, которые генерировали формы с помощью коротких кодов при использовании этого метода). То, что отлично работает для меня (и многих других), – это решение:

 function wpse104216_shortcode_fix( $content ) { // List all your shortcodes as an array $block = join( '|', array( 'contact_us', 'column', 'button', 'another-shortcode' ) ); $rep = preg_replace( "/(<p>)?\[($block)(\s[^\]]+)?\](<\/p>|<br \/>)?/", '[$2$3]', $content ); $rep = preg_replace( "/(<p>)?\[\/($block)](<\/p>|<br \/>)?/", '[/$2]', $rep ); return $rep; } add_filter( 'the_content', 'wpse104216_shortcode_fix' );