Есть ли возможность передать некоторые переменные PHP в JavaScript, чтобы я мог использовать их позже?
Только в single.php
.
Я слышал об этом, wp_enqueue_scripts
но с этим необходимо объявить путь к файлу JS, но он мне не нужен.
Есть ли возможность передать некоторые переменные PHP в JavaScript, чтобы я мог использовать их позже?
Только в single.php
.
Я слышал об этом, wp_enqueue_scripts
но с этим необходимо объявить путь к файлу JS, но он мне не нужен.
Ответы:
Посмотрите wp_localize_script
, что именно для этого и предназначено.
Но это требует предыдущего использованияwp_enqueue_scripts
, следовательно, вам нужно будет переместить JS в отдельный файл.
Это, безусловно, будет стоить этих нескольких минут усилий.
function wpse_96370_scripts()
{
if ( is_single() ) {
wp_register_script(
'your_script_handle',
get_template_directory_uri() . '/js/your-script.js',
array( /* dependencies*/ ),
1.0,
true
);
wp_enqueue_script( 'your-script-handle' );
$script_params = array(
/* examples */
'post' => 99,
'users' => array( 1, 20, 2049 )
);
wp_localize_script( 'your-script-handle', 'scriptParams', $script_params );
}
}
add_action( 'wp_enqueue_scripts', 'wpse_96370_scripts' );
В JS вы сможете использовать переданные параметры следующим образом:
var posts = scriptParams.post,
secondUser = scriptParams.users[1]; /* index starts at 0 */
// iterate over users
for ( var i = 0; i < scriptParams.users.length; i++ ) {
alert( scriptParams.users[i] );
}
Согласно вашему комментарию
Я создал новую таблицу БД с некоторыми
response.id
из Facebook API. Это таблица: action_id, user_id, post_id, fb_id, где fb_id - response.id из действия facebook. Затем в single.php у меня есть кнопка, где, если я нажимаю, я должен удалить действие fb с api:FB.api('/'+fb.response, 'delete');
гдеfb.response
должно бытьfb_id
из таблицы.
Поместите следующую /js/
папку вашей темы , создайте ее, если она не существует.
Давайте назовем файл fb-response.js
:
jQuery( '#button_id' ).click( function() {
FB.api( '/' + fbParams.id, 'delete' );
});
Затем зарегистрируйтесь, поставьте в очередь и локализуйте, как показано выше. Предполагая, что у вас есть идентификатор, который вы хотите передать, скажем $fb_id
:
wp_register_script(
'fb-response',
get_template_directory_uri() . '/js/fb-response.js',
array( 'jquery' ),
1.0,
true
);
wp_enqueue_script( 'fb-response' );
wp_localize_script( 'fb-response', 'fbParams', array( 'id' => $fb_id ) );
NB Очевидно, вышеизложенное предполагает, что это в теме. Если мы говорим «плагин», измените местоположение соответственно.
Прочитав ваш комментарий, я понимаю, что вы хотели бы сделать что-то вроде этого:
// Do something to get the ID
$facebook_id = ...
// Create and print the button
echo '<input onclick="FB.api('/'+'.$facebook_id.', 'delete')" />';
<input ... />
и была предназначена только для демонстрации. Насколько я вас понял, там все сказано, что вам нужно. Если нет, пожалуйста, попробуйте объяснить немного больше, но в вашем вопросе, а не в комментариях.