web-dev-qa-db-ja.com

ショートコードに属性を動的に追加する

私は動的に投稿で使用されるショートコードに属性を追加しようとしています。たとえば、次のように始めるとします。

[shortcode-name]

ショートコードに "attribute = xxx"の部分を追加したいので、効果的にはこうなります。

[shortcode-name attribute=xxx]

投稿の中で遭遇した最初のショートコードだけのために。これは可能ですか?

ありがとうございます。

1
Yazmin

テストされていません(そして今すぐテストすることはできません)が、フィルタを使って属性を追加できるべきです。

function test_sc($atts,$content) {
  // echo 'test_sc';
  $atts = shortcode_atts(
      array(
              'foo' => 'no foo',
              'bar' => 'default bar',
      ), 
      $atts, 
      'testsc' 
  );

  // var_dump($atts);

}
add_shortcode('testsc','test_sc');

function test_shortcode_att_add($atts) {
  # this filter should only run once (first use on page)
  remove_filter('shortcode_atts_testsc','test_shortcode_att_add');
  $atts['xxx'] = 'yyy';
  return $atts;
}
add_filter('shortcode_atts_testsc','test_shortcode_att_add');

もちろん、あなたが何を追加しようとしているのか、それがどのようなサポートコードに依存しているのか、正確にはわかりません。

3
s_ha_dum