it-roy-ru.com

Проходить PHP переменная в JavaScript

Есть ли возможность передать некоторые переменные PHP в javascript, чтобы я мог использовать их позже?

Только в single.php.
Я слышал о wp_enqueue_scripts, но при этом необходимо объявить путь к файлу JS, но он мне не нужен.

12
Sebastian Corneliu Vîrlan

Метод лучшей практики

Посмотрите на 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.ids из 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 ) );

Нотабене Очевидно, вышеизложенное предполагает, что это в теме. Если мы говорим "плагин", измените местоположение соответственно.

17
Johannes Pille

Прочитав ваш комментарий, я понимаю, что вы хотели бы сделать что-то вроде этого:

// Do something to get the ID
$facebook_id = ...

// Create and print the button
echo '<input onclick="FB.api('/'+'.$facebook_id.', 'delete')" />';
1
tfrommen