2017-04-26 2 views
0

Ich frage mich, ob es eine Möglichkeit gibt, meine Wordpress-Anhang Link innerhalb einer Javascript-Funktion zu setzen. In einfachen Worten, wäre es wie so funktioniert:Wordpress PHP Link innerhalb Javascript (für Photoswipe benutzerdefinierte Aktie URL)

$attach_url = "<?php echo wp_get_attachment_url(); ?>"; 
function() { 
    return $attach_url; 
} 

Genauer gesagt, ich bin nach einer Möglichkeit, es mit Photoswipe Anteil Tasten (Source Code here) zu implementieren:

$attach_url = = "<?php echo wp_get_attachment_url(); ?>"; 

    (this, function() { 
     'use strict'; 
    var PhotoSwipeUI_Default = 
    function(pswp, framework) { 
    shareButtons: [ 
       {url:'https://www.facebook.com/sharer/sharer.php?u={{attachment_pg_url}}'}, 
      ], 
      getAttachmentPageURL: function (shareButtonData) { 
       return $attach_url;}, 
      parseShareButtonOut: function(shareButtonData, shareButtonOut) { 
       return shareButtonOut; 
      }, 
     _updateShareURLs = function() { 
     var shareButtonOut = '', 
         shareButtonData, 
         shareURL, 
         attachment_pg_url; 
     for(var i = 0; i < _options.shareButtons.length; i++) { 
         shareButtonData = _options.shareButtons[i]; 

         attachment_pg_url = _options.getAttachmentPageURL(shareButtonData); 

         shareURL = shareButtonData.url.replace('{{attachment_pg_url}}', attachment_pg_url); 

Jede Hilfe wird sehr geschätzt!

EDIT

Hier ist meine aktualisierte Code, der fast arbeitet. Die js-Datei interpretiert das Enqueue-Skript aus functions.php. Die angezeigte URL ist jedoch <?php echo get_attachment_link(); ?> und nicht der tatsächliche Link (z. B. home.com/attachment-page), der korrekt angezeigt wird, wenn ich diesen PHP-Code in der Schleife verwende.

Wie kann ich die URL erhalten, um einen Link auszugeben, nicht den tatsächlichen PHP-Code?

In functions.php:

// Custom Photoswipe Share URL 
    wp_enqueue_script('photoswipe_custom_share_link', get_template_directory_uri() . '/custom_path_here/photoswipe-ui-single-item.js'); 
    $attach_url = "<?php echo get_attachment_link(); ?>"; 
    wp_localize_script('photoswipe_custom_share_link', 'pswp_custom_share', $attach_url); 

In der Photoswipe js-Datei (mit einigen zusätzlichen Korrekturen von meiner ursprünglichen Post):

EDIT

machte ich den Fehler Verwenden von Anführungszeichen in meinem Enqueue-Skript. Mit dem folgenden Code ist die Formatierung jetzt korrekt. Das einzige Problem ist, dass die URL-Ausgabe "home.com" statt "home.com/attachment-page" ist.

Wie kann ich die dynamisch generierte Anhangseite außerhalb der Schleife definieren? Muss ich es echo?

$attach_url = get_attachment_link($attachment->ID); 

BEARBEITEN - LÖSEN!

Ich musste JavaScript Enqueue verwenden, um Basis-URL der Anlage in der Schleife zu erhalten. (Basierend auf der Antwort here und mit der Hilfe des Diktierers).

In functions.php:

// Custom Photoswipe Share URL 
function pswp_custom_share() 
    { 
     /* Get the ID of the current post */ 
     global $post; 
     $ID = $post->ID; 

     /* register the script */ 
     wp_register_script('photoswipe_custom_share_link', get_template_directory_uri() . 'custom_path_here/photoswipe-ui-single-item.js', array('jquery'), false, true); 
     $attach_url = array(
      'attachment_page' => get_attachment_link($ID) 
     ); 
     wp_enqueue_script('photoswipe_custom_share_link'); 
     wp_localize_script('photoswipe_custom_share_link', 'attach_url', $attach_url); 

    } 

    /* If we're not in the admin section call our function on the wp_enqueue_scripts hook */ 
    if (!is_admin()) add_action("wp_enqueue_scripts", "pswp_custom_share", 10); 

In der Photoswipe js-Datei:

getAttachmentURLForShare: function (/*shareButtonData */) { 
       return attach_url.attachment_page; 
      }, 

Antwort

0

Sie können Wordpress enqueue Skriptfunktion verwenden diese

zu erreichen Bitte folgen Sie unten, um weitere Informationen

https://code.tutsplus.com/tutorials/how-to-pass-php-data-and-strings-to-javascript-in-wordpress--wp-34699

Lassen Sie mich wissen, wenn es Ihr Problem

+0

Also sollte ich diesen Code in functions.php verwenden: 'wp_enqueue_script; ('photoswipe_custom_share_link', get_template_directory_uri() '/custom_path_here/photoswipe-ui-single-item.js'.) $ attach_url = ""; wp_localize_script ('photoswipe_custom_share_link', 'pswp_custom_share', $ attach_url); ' Und dann in meinem Javascript Referenz als:' getAttachmentPageURL: function (shareButtonData) { return pswp_custom_share;} '? – BlueHelmet

+0

Ja sollte es so funktionieren .. bitte versuchen Sie es mich wissen, wenn es funktioniert .. – thedarkcoder

+0

Danke, es funktioniert, obwohl es den PHP-Code selbst ausgibt, anstatt einen Link. Meine vollständige Bearbeitung ist oben. – BlueHelmet

0

löst sollte es möglich sein, in der Theorie als PHP-Server-Seite vor dem Javascript läuft auf Client-Seite verarbeitet wird.

Ich habe das Skript fehlt die Anlage-ID aus der wp_get_attachment_url Funktion bemerkt.

Von der Wordpress API-Dokumentation:

<?php echo wp_get_attachment_url(12); ?> 

Der erste Schritt für Echo der Befestigung URL der Seite, die Funktionalität auf einer grundlegenden Ebene zu prüfen wäre. Sobald Sie dies getan haben, wissen Sie, dass Sie die Funktion korrekt anhängen.

zuweisen dann diesen Wert auf ein JavaScript-Variable und versuchen, irgendeine Art von Alarm oder Konsolenprotokoll laufen zu bestätigen, dass Sie erfolgreich die URL zu einem globalen JS Variable analysieren können. siehe

Dann, wenn Sie die Variable aus dem Inneren einer Funktion zugreifen können. Wenn Sie die oben genannten grundlegenden Schritte ausführen können, sollten Sie diese Daten mehr als möglich in das Photoswipe-Plugin einbetten.

Lassen Sie mich wissen, wenn Sie nicht weiterkommen, werde ich versuchen, ich kann in irgendeiner Weise zu helfen.

+1

Danke, du hast mir geholfen zu erkennen, dass ich tatsächlich ' '. Ich habe meine Bearbeitung oben eingefügt. – BlueHelmet

+0

Gern geschehen! –

Verwandte Themen