Passar a variável PHP ao javascript

12

Existe alguma possibilidade de passar algumas variáveis do PHP em javascript para que eu possa usá-las depois?

Apenas em single.php .
Eu ouvi sobre wp_enqueue_scripts , mas com isso é necessário declarar um caminho para um arquivo JS, mas não preciso de um.

    
por Sebastian Corneliu Vîrlan 19.04.2013 / 00:02

2 respostas

17

Método de melhores práticas

Dê uma olhada em wp_localize_script , que deve fazer exatamente isso.

Mas o requer o uso anterior de wp_enqueue_scripts , portanto, você precisará Mova seu JS para um arquivo separado, de fato.
Vai valer a pena esses poucos minutos de esforço, com certeza.

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

No JS, você poderá usar os parâmetros passados da seguinte forma:

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] );
}

[Editar] sua situação

De acordo com seu comentário

  

Eu criei uma nova tabela db com alguns response.id s da API do Facebook. Esta é a tabela: action_id, user_id, post_id, fb_id em que fb_id é response.id de uma ação do facebook. Então no single.php eu tenho um botão onde se eu pressionar devo deletar a ação fb com api: FB.api('/'+fb.response, 'delete'); onde fb.response deve ser fb_id da tabela.

Coloque a seguinte pasta /js/ do seu tema, crie-a, se ela não existir.
Vamos chamar o arquivo fb-response.js :

jQuery( '#button_id' ).click( function() {
    FB.api( '/' + fbParams.id, 'delete' );
});

Em seguida, registre, enfileire e localize como visto acima. Supondo que você tenha o ID que deseja transmitir, digamos $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 ) );

N.B. Obviamente, o acima está assumindo que isso está em um tema. Se estamos falando de "plugin", altere as localizações de acordo.

    
por Johannes Pille 19.04.2013 / 00:21
1

Depois de ler o seu comentário, eu entendo que você gostaria de fazer algo assim:

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

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