4

いくつかの属性を持つカスタム ショートコード タグがあり、その属性を新しい行に表示できるようにしたいと考えています。これにより、コンテンツ エディターが読みやすくなります。

[component
    attr1 ="value1"
    attr2 ="value of the second one"
    attr3 ="another"
    attr4 ="value"
    ...
    attrN ="valueN"]

この要件の背後にある理由は、一部の属性の内容が非常に冗長である可能性があるためです。残念ながら、次のようwpautop()に配列を壊す厄介な余分なマークアップを追加しますargs( php を使用print_r($args)):

Array ( [0] => attr1 [1] => ="value1"
/> [3] => attr2 = [4] => "value [5] => of [6] => the [7] => second [8] => one"
/> [10] => "" //...and more like this)

属性をインラインで試しました:

[component attr1 ="value1" attr2 ="value of the second one" ="value"... attrN ="valueN"]

出力は期待どおりです。

Array ( [attr1] => value1 [attr2] => value of the second one [attr3] => //...and so on)

$args意図した属性を持ち、配列を壊す余分なマークアップを避ける方法はありますか?

4

1 に答える 1

0

受け入れられた回答 - @Stephen の功績

わかりました、この方法でショートコードが実行されるのを見たことがないので、シナリオをテストするために少しコードをまとめました. そして、標準のショートコード形式で問題なく動作するコードでも同じ結果が得られます。

標準ショートコード形式

[shortcode name1="value1" name2="value2"]

これは wpautop() の結果ではないと思いますが、ショートコード属性が解析される方法の結果です。上記の例を見ると、ショートコードと名前 => 値のペアを区切るために引用符で囲まれていない空白のみが使用されていることがわかります (つまり、名前と「=」の間にスペースはなく、各名前 => 値の間にはスペースが 1 つだけです)。ペア)。このコンテキストで
は、 も空白と見なされます。

私はショートコード解析の特定の内部構造を掘り下げていないので、役立つフックやフィルターについて提案することはできません。おそらく、ここにいる別のユーザーがそれについていくつかのアイデアを持っています。

ショートコードを自分のようにフォーマットする必要がある場合は、ショートコード関数に渡された配列を解析するカスタム コードを記述する必要があると思います。すべての値がそこにあるので、それらをつなぎ合わせることができるはずです。

別のオプションとして、エンドユーザーが値を入力してショートコードをコンテンツに入力するためのフォームを提供することもできます。

私の答えの更新

私の答えの何かが私を悩ませていたので、もう一度見ました。そして、正しい wpautop() がページの出力に影響を与えています。しかし、それがショートコードの問題の原因だとは思いません。

于 2013-02-08T16:33:28.040 に答える