7

ホームページ上でコンテンツを生成するためにショートコードのみの静的ページを使用するWordPressを利用したWebサイトがあります。

ページは、フロントページを静的ページに設定し、the_content()を使用して、これらのショートコードを取得します。page.phpで。ページのコンテンツにはスペースがなく、ショートコードしかないため、次のようになります。

[content-shortcode blah blah][more content-shortcode blah blah]

WordPressが<p></p>ショートコードコードの前に空を追加し、すべてのショートコードコードの最後に別のP / Pを追加することを除いて、すべて正常に機能します(ショートコードの間に何もありません)。

どうすれば削除できますか?ただし、グローバルwpautop削除機能を無効にしたくないのは、一部のユーザーに役立つ可能性があるため、ホームページに表示される最初と最後のPのみを削除したいからです。

4

5 に答える 5

20

試すことができることがいくつかあります。

wp_autopショートコード出力の前に処理されるため、を延期することができます。

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);
于 2013-03-15T14:54:11.627 に答える
2

wpautop()そのフィルター投稿コンテンツforce_balance_tags()以外にも、エディターを介して入ってくる悪いHTMLのバランスをとるように設計されたなどのさまざまな機能があります。

それらは主にformatting.phpで定義されており、ソースでさまざまなコードを確認できます。

ご指摘のとおり、これらのフィルターの削除は1行の簡単なものです。

remove_filter('the_content', 'wpautop');

詳細については、http://codex.wordpress.org/Function_Reference/wpautopをご覧ください。

あなたを助ける以下のリンクをチェックしてください。

  1. WordPress投稿の<p>タグと<br/>タグを削除する
  2. wordpress-wrapping-shortcodes-with-p-tags
  3. wpautopプラグインを無効にする

これがお役に立てば幸いです。

于 2013-03-19T09:14:32.827 に答える
2

これを試してください(このコードをどこかに貼り付けてくださいfunctions.php):

function shortcode_empty_paragraph_fix($content){   
    $array = array (
        '<p>[' => '[', 
        ']</p>' => ']', 
        ']<br />' => ']'
    );

    $content = strtr($content, $array);
    return $content;
}

add_filter('the_content', 'shortcode_empty_paragraph_fix');
于 2013-03-20T13:49:50.997 に答える
1

<p>ホームページのタグのみを削除したいので、functions.phpファイルに以下のコードを追加します。

add_action('pre_get_posts', 'remove_autop_from_home');
function remove_autop_from_home() {
    // check to see if we are on the home page
    if(is_home()) {
        remove_filter('the_content', 'wpautop');
    }
}
于 2013-03-21T23:02:04.467 に答える
0
jQuery('p:empty').remove();

また、JSを使用することもできます。上記のコードは、ページからすべての空のpタグを削除するのに役立ちます

于 2019-10-01T09:02:54.497 に答える