web-dev-qa-db-ja.com

Pタグとbrタグを追加するショートコード

私はこれが以前に頼まれたことを謝罪します、そして、私は問題が終わりのpまたはbrタグを加えるwpautop関数にあると思います、しかし私が見つけたすべての解決策はうまくいかなかったので私は問題を直すために迷います。

私がやっている:

class my_plugin {

  public static function init() {
    remove_filter('the_content', 'wpautop');
    add_shortcode('myshortcode', array(__CLASS__, 'my_shortcode'));
  }

  public static function my_shortcode() {
    /* do stuff here */
    ob_start();
    include('views/file.php');
     return ob_get_clean();
  }
}

my_plugin::init();

私も試してみました:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99 );
add_filter( 'the_content', 'shortcode_unautop', 100 );

これが現在のビューファイルの内容です。

<form method="get" id="search" action="<?= get_permalink() ?>">
    <input name="st" id="st" class="text" type="text">
    <input id="search" class="submit" value="Search" type="submit">
</form>

そして、これがレンダリングされているものです:

<form method="get" id="search" action="">
    <input name="st" id="st" class="text" type="text"><br>
    <input id="search" class="submit" value="Search" type="submit"><br>
</form>

元のバージョンを使用してすべての改行を削除すると、正しくレンダリングされます。問題は、それがオリジナルファイルのかなり単純化されたバージョンであり、そしてそれらが単一行でなければならないならば、それは "ビュー"の編集を悪夢にするでしょう。

ビューのコンテンツを返すのではなく、すべての機能が期待どおりに機能することをエコーアウトした場合の価値があります(もちろん、ショートコードを他のコンテンツに正しく配置できることを除けば)。

また、ここで行うことは、ビューから使用される変数を設定するために、リクエストから2つの変数を取得し、1つのAPI呼び出しを取得することです。

5
JSP

これが他の誰にとっても役立つことになるかどうかは定かではありませんが、問題の原因はテーマのカスタムフォーマッタでした。

function my_formatter($content) {
        $new_content = '';
        $pattern_full = '{(\[raw\].*?\[/raw\])}is';
        $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
        $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

        foreach ($pieces as $piece) {
                if (preg_match($pattern_contents, $piece, $matches)) {
                        $new_content .= $matches[1];
                } else {
                        $new_content .= wptexturize(wpautop($piece));
                }
        }

        return $new_content;
}

remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

add_filter('the_content', 'my_formatter', 99);

FWIW:テーマは "Pyre"テーマフレームワークを使うAvenue(ThemeForestから)です。同じテーマを使用している他のサイトがこの問題を抱えていなかった理由は、functions.phpファイルが子テーマの一部として書き直され/変更され、上記の機能を持っていたshortcodes.phpファイルを含まなかったからです。

あなたの時間を無駄にしてすみませんが、私は本当にあなたの時間/答えに感謝します。

3
JSP

スルー WordPressの自動フォーマットを削除します (9の箇所を参照)rawタグを使用する必要があることがわかりました。私の場合:

[raw][album=1 template=portfolio][/raw]

私はNextGEN Galleryを使い、私のテンプレートにはpbrタグが追加されました。他の選択肢は、カスタムフォーマッタをコメントアウトすることです。私のテーマはMG Universal Multimedia Galleryです。

1
testing

すべてのコードを見なくても、言うのは難しいです。

ショートコード関数内のマークアップで特定の改行、スペース、または奇妙な文字が自動的に追加されるべきでない場所にWPを引き起こすという問題を数回見ました。

あなたの関数を見て、それがそれをやっているのがそのようなビュー/ file.phpの中のそのようなものであるかもしれません。奇妙な間隔や不要な改行がないことを確認してください。改行を削除して再度追加してみてください。奇妙に聞こえますが、私は前にそれを見ました。

0
mindctrl