2017-04-26 13 views
0

JavaScript機能の中にWordpressの添付ファイルリンクを入れる方法があるのだろうかと思います。Javascriptの中のWordpress PHPリンク(Photoswipeカスタム共有URL用)

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

は、具体的には、私はPhotoswipeのシェアボタン(完全なソースコードhere)とそれを実装する方法を探しています:

$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); 

すべてのヘルプを簡単な言葉で、それはそうのように機能します非常に高く評価されています!

EDIT

ここでほとんど働いている私の更新されたコードは、です。 jsファイルは、functions.phpからエンキュースクリプトを解釈しています。しかし、表示されるURLは実際のリンク(ex:home.com/attachment-page)ではなく、<?php echo get_attachment_link(); ?>であり、このPHPコードをループで使用すると正しく表示されます。

実際のPHPコードではなく、URLを出力するにはどうすればよいですか? (私のオリジナルのポストからいくつかの余分な修正を)Photoswipe JSファイルで

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

:のfunctions.phpで

EDIT

は私がミスを犯しましたエンキュースクリプトで引用符を使用する方法以下のコードで、書式設定が正しいようになりました。唯一の問題は、url出力が "home.com/attachment-page"ではなく "home.com"であることです。

動的に生成された添付ファイルのページURLをループ外で定義するにはどうすればよいですか?それをエコーする必要はありますか?

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

EDIT-SOLVED!

ループ内の添付ファイルのベースURLを取得するには、JavaScriptエンキューを使用する必要がありました。 (回答hereとダークコーダーのヘルプに基づいて)。 functions.phpで

Photoswipeのjsファイルで
// 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); 

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

答えて

0

あなたはこの

を達成するためのWordPressエンキュースクリプト機能を使用することができ、詳細な情報のためのリンクの下に従ってください。

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

あなたの問題が解決するかどうか教えてください

+0

だから私はのfunctions.phpにこのコードを使用する必要があります。 'wp_enqueue_script( 'photoswipe_custom_share_link'、get_template_directory_uri() '/custom_path_here/photoswipe-ui-single-item.js'); $ attach_url = "<?php echo wp_get_attachment_url();?>"; wp_localize_script( 'photoswipe_custom_share_link'、 'pswp_custom_share'、$のattach_url); ' そしてとしての私のjavascriptで参照:' getAttachmentPageURL:機能(shareButtonData){ 戻りpswp_custom_share;}、 '? – BlueHelmet

+0

はい、それはうまくいくはずです。試してみてください。うまくいけば教えてください。 – thedarkcoder

+0

リンクではなく、PHPコード自体を出力していますが、ありがとうございます。私の完全な編集は上記です。 – BlueHelmet

0

JavaScriptはクライアント側で実行される前にPHPがサーバー側で処理されるため、理論上は可能です。

あなたのスクリプトにwp_get_attachment_url関数の添付ファイルIDが見つからないことに気付きました。

WordpressのAPIドキュメントから:

<?php echo wp_get_attachment_url(12); ?> 

最初のステップは、ページに添付ファイルのURLをエコーで、基本的なレベルでの機能をテストすることです。これを済ませたら、関数に正しく接続していることがわかります。

次に、その値をJavaScript変数に割り当て、アラートまたはコンソールログを実行して、URLをグローバルなJS変数に正常に解析できることを検証します。

次に、関数内からその変数にアクセスできるかどうかを確認します。上記の基本的な手順のそれぞれを進めることができれば、このデータをPhotoswipeプラグインに解析することは可能ではありません。

私はあなたが立ち往生する場合は、私は可能な限り任意の方法で助けを試みることを知らせてください。

+1

ありがとうございました。私が実際に '<?php echo get_attachment_link();を使用する必要があることを実感しました。 ?> '私は上記の私の編集を含んだ。 – BlueHelmet

+0

ようこそ。 –

関連する問題