PHP-ссылка WordPress внутри Javascript (для пользовательского URL-адреса Photoswipe)

Мне интересно, есть ли способ поместить мою ссылку вложения WordPress внутри функции javascript. Проще говоря, это будет работать так:

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

В частности, я ищу способ реализовать его с помощью кнопок общего доступа Photoswipe (полный исходный код). Вот):

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

Любая помощь высоко ценится!

РЕДАКТИРОВАТЬ

Вот мой обновленный код, который почти работает. Файл js интерпретирует скрипт постановки в очередь из functions.php. Тем не менее, отображаемый URL <?php echo get_attachment_link(); ?>, а не фактическая ссылка (например: home.com/attachment-page), которая отображается правильно, когда я использую этот код php в цикле.

Как я могу получить URL для вывода ссылки, а не фактический код PHP?

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

В js-файле Photoswipe (с некоторыми дополнительными исправлениями из моего исходного поста):

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

attachment_url = _options.getAttachmentURLForShare(shareButtonData);

shareURL = shareButtonData.url.replace('{{attach_url}}', encodeURIComponent(attachment_url) );

РЕДАКТИРОВАТЬ

Я сделал ошибку, используя кавычки в моем сценарии постановки в очередь. С помощью приведенного ниже кода форматирование теперь корректно. Единственная проблема заключается в том, что вывод URL — «home.com» вместо «home.com/attachment-page».

Как я могу определить динамически сгенерированный URL страницы вложения вне цикла? Мне нужно повторить это?

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

РЕДАКТИРОВАТЬ — РЕШЕНО!

Мне нужно было использовать JavaScript, чтобы получить базовый URL-адрес вложения в цикле. (На основании ответа Вот и с помощью Darkcoder).

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

В файле Photoswipe js:

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

Другие решения

Теоретически это должно быть возможно, поскольку PHP обрабатывается на стороне сервера, прежде чем JavaScript запускается на стороне клиента.

Я заметил, что в вашем скрипте отсутствует идентификатор вложения из функции wp_get_attachment_url.

Из документации WordPress API:

<?php echo wp_get_attachment_url( 12 ); ?>

Первым шагом было бы проверить функциональность на базовом уровне, повторив URL-адрес вложения на странице. Сделав это, вы знаете, что правильно подключаетесь к функции.

Затем присвойте это значение переменной JavaScript и попробуйте запустить какой-либо журнал предупреждений или консоли, чтобы проверить, что вы можете успешно проанализировать URL-адрес глобальной переменной JS.

Затем посмотрите, можете ли вы получить доступ к этой переменной внутри функции. Если вы можете выполнить каждый из перечисленных выше основных этапов, то для вас будет более чем возможно проанализировать эти данные в плагине Photoswipe.

Дайте мне знать, если вы застряли, я постараюсь помочь, чем смогу.

0

По вопросам рекламы [email protected]