2013-12-17 16 views
5

WordPressの投稿には、my_playerのショートコードの番号が不明で、フックを正しく追加しました。私はあなたのコンテンツにショートコード名を渡すことができるいくつかのタイプのWordPress関数があるのだろうかと思っていましたし、属性名で索引付けされた属性で一致するショートコードの配列を与えることができます。以下の私のコードのようなもの...投稿内容からWordPressショートコード属性を抽出する方法

$matches = get_shortcode_matches($content, "my_player"); 

for($i = 0; $i < sizeof($matches); $i++) 
{ 
    $title = $matches[$i]['title']; 
    $mp3 = $matches[$i]['mp3']; 
    $soundcloud = $matches[$i]['soundcloud']; 
} 

私はあなたが私は上記の持っているように、あなたがこれらのインデックス付きの値を使用することができますadd_shortcode()機能を使用してショートコード用フックを作成するときにことを知っているが、私ができる機能を持っている必要があります後でループの外側にアクセスします。 WordPressにはそのような機能がありますか?

答えて

0

これにはいくつかの方法があります

<?php do_shortcode($content); ?> 
+2

:よう

何か。それは属性とその値のいずれかを抽出するのに役立たない。 – jas7457

2

、これを試してください:あなたは上記したよう 1.あなたの「MU-プラグイン」フォルダに

// [myplayer attr="your-value"] 
function myplayer_func($atts) { 
    extract(shortcode_atts(array(
     'title' => 'something', 
     'mp3' => 'another something', 
       'soundcloud' => 'something else', 
    ), $atts)); 

    return "attr= {$attr}"; 
} 
add_shortcode('myplayer', 'myplayer_func'); 
を以下のように挿入し、独自のスニペットを書きますどこかのサブドメインを含むから任意のポストで

その後

[myplayer title="something" mp3="another something" soundcloud="something else"] 

。 2. ShortcoderGlobal Content Blocksのようなプラグインを使用することができます

+0

私はすでにフックと 'add_shortcode()'関数を設定していると言いました。私はあなたがこの関数からこの情報を使うことができることを知っていますが、ショートコード名と検索するコンテンツを与え、名前と値のペアの配列を返す関数が必要です。私の元の投稿に書かれた私のコードに似たもの。 – jas7457

+0

恐ろしいextract()関数を使用することは、WordPressのコーディング標準ではお勧めできません。ちょうどあなたが知っているので。 – redanimalwar

0

私はあなたが既存のアクションを使用することはできないと思います。 [shortcode_parse_atts]にはイベントが添付されていません。 あなたが行うことができる唯一の方法は、add_action/globalがあなたの[add_shortcode]関連する関数/メソッドのすべてで貴重なものです。私はすでにそれらを使用

function doShortCode($atts, $content=null){ 
    global $my_shortcode_storage; 
    $my_shortcode_storage['my_shortcode_1'][] = $atts; 
}