2013-12-17 10 views
5

In meinen Posts auf WordPress habe ich eine unbekannte Anzahl von Shortcodes des Typs my_player, die ich erstellt und korrekt hinzugefügt Haken. Ich habe mich gefragt, ob es irgendeine Art von WordPress-Funktion gibt, an die Sie Ihren Inhalt weitergeben können, und einen Shortcode-Namen, und es könnte Ihnen ein Array von passenden Shortcodes mit ihren Attributen geben, die durch den Attributnamen indiziert sind. So etwas wie mein Code unten ...So extrahieren Sie WordPress Shortcode-Attribute aus Post-Inhalt

$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']; 
} 

Ich weiß, dass, wenn Sie den Haken für die Kurzwahlnummer mit der add_shortcode() Funktion erstellen können Sie diese indizierte Werte verwenden, wie ich oben haben, aber ich brauche eine Funktion haben kann, greifen Sie später und außerhalb der Schleife auf sie zu. Hat WordPress eine solche Funktion?

Antwort

0

dies versuchen,

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

ich bereits verwendet diese. Das hilft jedoch nicht, irgendwelche Attribute und ihre Werte zu extrahieren. – jas7457

2

Es gibt mehrere Möglichkeiten, dies zu tun: 1. Ihren eigenen Schnipsel schreiben, wie Sie oben haben, legen Sie die folgend in Ihrem "mu-plugins" -Ordner

// [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'); 

Dann

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

in jeder Post von überall Subdomains inklusive. 2. Sie können Plugins wie Shortcoder und Global Content Blocks

+0

Ich sagte, dass ich bereits die Hooks und die Funktion 'add_shortcode()' eingerichtet habe. Ich weiß, dass Sie diese Informationen von dieser Funktion verwenden können, aber ich möchte eine Funktion haben, die den Shortcode-Namen, den zu suchenden Inhalt und ein Array von Name-Wert-Paaren zurückgibt. Etwas ähnlich zu meinem Code in meinem ursprünglichen Beitrag geschrieben. – jas7457

+0

Die Verwendung der schrecklichen extract() - Funktion wird von den WordPress-Codierungsstandards abgeraten. Nur damit du es weißt. – redanimalwar

0

verwenden Ich glaube nicht, dass Sie vorhandene Aktionen verwenden können. [shortcode_parse_atts] hat keine Ereignisse anhängen. Der einzige Weg, wie Sie es tun können, ist add_action/global wertvoll in jeder Ihrer [add_shortcode] verwandte Funktion/Methoden.

Etwas wie:

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