Czy jest jakaś możliwość przekazania niektórych zmiennych PHP w javascript, aby móc ich później użyć?
Tylko w single.php
.
Słyszałem o, wp_enqueue_scripts
ale z tym trzeba zadeklarować ścieżkę do pliku JS, ale nie potrzebuję go.
Czy jest jakaś możliwość przekazania niektórych zmiennych PHP w javascript, aby móc ich później użyć?
Tylko w single.php
.
Słyszałem o, wp_enqueue_scripts
ale z tym trzeba zadeklarować ścieżkę do pliku JS, ale nie potrzebuję go.
Odpowiedzi:
Spójrz na to wp_localize_script
, co ma dokładnie to zrobić.
Ale wymaga to wcześniejszego użyciawp_enqueue_scripts
, dlatego trzeba przenieść JS do osobnego pliku.
Na pewno będzie to warte kilku minut wysiłku.
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' );
W JS będziesz mógł wtedy wykorzystać przekazane parametry w następujący sposób:
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] );
}
Jak na twój komentarz
Stworzyłem nową tabelę db z niektórymi
response.id
s z facebook api. Oto tabela: action_id, user_id, post_id, fb_id, gdzie fb_id to response.id z akcji na Facebooku. Następnie w single.php mam przycisk, w którym po naciśnięciu muszę usunąć akcję fb za pomocą interfejsu API:FB.api('/'+fb.response, 'delete');
gdziefb.response
powinna byćfb_id
z tabeli.
Umieść następujący /js/
folder swojego motywu , utwórz go, jeśli nie istnieje.
Nazwijmy plik fb-response.js
:
jQuery( '#button_id' ).click( function() {
FB.api( '/' + fbParams.id, 'delete' );
});
Następnie zarejestruj się, umieść w kolejce i zlokalizuj, jak pokazano powyżej. Zakładając, że masz identyfikator, który chcesz przekazać, powiedzmy $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 Oczywiście powyższe zakłada, że jest to temat. Jeśli mówimy o „wtyczce”, odpowiednio zmień lokalizacje.
Po przeczytaniu komentarza rozumiem, że chcesz zrobić coś takiego:
// Do something to get the ID
$facebook_id = ...
// Create and print the button
echo '<input onclick="FB.api('/'+'.$facebook_id.', 'delete')" />';
<input ... />
A jego zadaniem było tylko do celów wykazania. O ile cię rozumiem, wszystko mówiło, czego potrzebujesz. Jeśli nie, spróbuj wyjaśnić coś więcej, ale w swoim pytaniu, a nie w komentarzach.