Hinzufügen von PHP direkt in den Widget-Shortcode

Also hier ist mein Button Shortcode in meinem Widget.

[button title="EDIT" href="ID ); ?>"] 

Wie Sie erraten können, funktioniert die href-URL nicht.

Was wäre der beste Weg, um PHP im Shortcode hinzuzufügen?

Vielen Dank

Solutions Collecting From Web of "Hinzufügen von PHP direkt in den Widget-Shortcode"

Um ehrlich zu sein, wenn Sie sehen, dass Sie ausführbaren PHP-Code in ein Shortcode-Attribut oder in den Inhaltseditor im Allgemeinen einfügen müssen, tun Sie etwas falsch. Du solltest nochmal überlegen, was, warum und wie es geht. Es besteht ein hohes Sicherheitsrisiko bei der Annahme von ausführbaren PHP-Code-Formular-Benutzereingaben.

Stattdessen sollten Sie die Post-ID in Shortcode-Attributen übergeben und den Permalink erhalten, wenn Sie den Shortcode analysieren.

Zum Beispiel könnte die PHP-function, die den Shortcode analysiert, in etwa so aussehen:

 add_shortcode( 'button' , 'render_button' ); function render_button( $atts, $content = null ) { $atts = shortcode_atts( array( 'postID' => 0, 'href' => '', 'title' => '' ), $atts ); //You may need sanitize title, not sure what your needs are //change this if you need $atts['title'] = sanitize_text_field( $atts['title'] ); if( (int) $atts['postID'] > 0 ) { //If postID is set and greater thant zero, get post permalink for that ID //and override href $atts['href'] = edit_product_url( $atts['postID'] ); //For standard posts uncomment next linke //$atts['href'] = get_permalink( $atts['postID'] ); } //Example output $output = '' . $atts['title'] . ''; return $output; } 

Jetzt erhalten Sie die functionalität ohne die Notwendigkeit, ausführbare PHP in Shortcode-Attribute einzuschließen. Außerdem können Sie die function render_button direkt verwenden, wenn Sie dies benötigen.

Sie können den Shortcode im Content-Editor oder überall dort verwenden, wo Shortcodes analysiert werden. Beispiel:

 [button title="EDIT" postID="1542"] 

Sie können Schaltflächen auch durch direkten Aufruf der function rendern:

  $button = render_button( array( 'postID' => 4578 ) ); echo $button; 

Und wenn Sie eine bestimmte href benötigen, können Sie diesen Shortcode verwenden:

  [button title="EDIT" href="http://www.example.com"] 

Oder mit direktem functionsaufruf:

  $button = render_button( array( 'href' => 'http://www.example.com' ) ); echo $button; //Or shorter echo render_button( array( 'href' => 'http://www.example.com' ) ); 

Ich würde dies auf das Folgende ändern

 do_shortcode('[button title="EDIT" href="' . edit_product_url( $post->ID ) . '"]');