2016-09-21 2 views
1

Ich habe mehrere Plugins von verschiedenen Entwicklern, die mir erlauben, Amazon-Produkte anzuzeigen. Sie alle erfordern, dass ich die Amazon-Kategorie-ID innerhalb ihrer Shortcodes eingeben.WordPress Pass-Variable zu einem anderen Shortcode

[amazon bestseller="1234567"] 
[amz_links node="1234567"] 
[amazon_toprated category="1234567"] 

ich diese Kurzwahlnummern über eine riesige Menge an Seiten, Widgets usw. Hie bin mit und dann muss ich die IDs ändern, und es ist ein riesiger Aufwand alle manuell zu ändern.

Meine Idee war, meine eigenen Shortcode zu erstellen, wie [myamazon_id] und geben Sie die Kurzwahlnummer in den anderen Kurzwahlnummern: [amazon bestseller="[myamazon_id]"]

Leider ist dieses nicht zu funktionieren scheint, da diese selbst sind eingeschlossen Kurzwahlnummern, die apperantly don‘ t erlauben Shortcodes innerhalb von Shortcodes.

Meine aktuelle Lösung ist es, ein Plugin zu verwenden, mit dem ich PHP innerhalb von WordPress-Seiten und Widgets verwenden kann.

[insert_php]echo do_shortcode('[amazon bestseller="'.myamazonid().'"]');[/insert_php]

Dies funktioniert, aber ich frage mich, ob es eine schönere Lösung ist eine varible zu einer Kurzwahlnummer zu übergeben. Die Verwendung von PHP direkt auf den Seiten und Widgets ist wirklich nicht etwas, worüber ich mich gut fühle.

Mein Ziel wäre, so etwas haben: [amazon bestseller="[myamazon_id]"]

Antwort

0

Eine einfache Lösung hierfür kann das Plugin Post Snippets sein. Mit diesem Plugin können Sie 3 neue Shortcodes erstellen, die die 3 Amazon Shortcodes mit der Kategorie ID enthalten. Jetzt können Sie die neu erstellten Shortcodes verwenden, und wenn Sie die Kategorie-ID ändern möchten, müssen Sie dies nur an einer Stelle bearbeiten.

0

Shortcode mit diesem [amazon bestseller="myamazon_id"] mit folgendem Code möglich.

Sie brauchen keine weiteren Short mit diesen Klammern zu wickeln "[" und "]"

function first_shortcode_amazon($atts) { 
    $newvar = do_shortcode('['.$atts['bestseller'].']'); 
    return $newvar; 
} 
add_shortcode('amazon', 'first_shortcode_amazon'); 


function second_shortcode_for_amazonid($atts) { 
    global $post; 
    // here i have placed global post id. you can do code to get amazon id here 
    return 'AMAZON_ID=> '.$post->ID; 
} 
add_shortcode('myamazon_id', 'second_shortcode_for_amazonid'); 
+0

Dies sieht aus wie eine gute Lösung, aber ich kann es nicht zu arbeiten. Der Shortcode verhält sich so, als wäre keine ID angegeben worden, was zu der Annahme führt, dass die '' 'first_shortcode_amazon''' Funktion' '' myamazon_id''' nicht als Shortcode interpretiert, sondern als normalen Text. –

Verwandte Themen