PHP 변수를 자바 스크립트로 전달


13

나중에 사용할 수 있도록 일부 PHP 변수를 자바 스크립트로 전달할 가능성이 있습니까?

에서만 single.php.
나는 들었지만 wp_enqueue_scriptsJS 파일의 경로를 선언하는 것이 필요하지만 필요하지는 않습니다.


나중에 무엇을 의미합니까 ? 그리고 PHP 변수의 위치와 관련하여 변수를 어디에서 사용 하시겠습니까? 물론 PHP를 통해 JavaScript 코드를 에코 / 인쇄하여 PHP 변수 값을 삽입 할 수 있습니다. 그러나 이것은 내가 추측, 원하는 아니지만 ...
tfrommen

facebook api에서 response.id를 사용하여 새 db 테이블을 만들었습니다. action_id, user_id, post_id, fb_id 테이블입니다. 여기서 fb_id는 페이스 북 조치의 response.id입니다. 그런 다음 single.php에 버튼을 누르면 api로 fb 작업을 삭제해야합니다. FB.api ( '/'+ fb.response, 'delete'); 여기서 fb.response는 테이블에서 fb_id 여야합니다.
Sebastian Corneliu Vîrlan

답변:


18

모범 사례 방법

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페이스 북 API에서 일부를 사용하여 새 DB 테이블을 만들었습니다 . action_id, user_id, post_id, fb_id 테이블입니다. 여기서 fb_id는 페이스 북 조치의 response.id입니다. 그런 다음 single.php에 버튼을 누르면 api로 fb 작업을 삭제해야합니다. FB.api('/'+fb.response, 'delete');어디 에서 테이블에 fb.response있어야합니까 fb_id?

다음을 테마 /js/폴더에 넣고 존재하지 않는 경우 만듭니다.
파일을 호출 해 봅시다 fb-response.js:

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

그런 다음 위와 같이 등록하고 대기열에 넣고 지역화하십시오. 전달하려는 ID가 있다고 가정 해 봅시다 $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 분명히 위는 이것이 주제에 있다고 가정합니다. "플러그인"이라고 말하는 경우 그에 따라 위치를 변경하십시오.


나는 이것에 약간의 구걸 자이므로, 이것을 wordpress에 구현하려고합니다 : papermashup.com/jquery-iphone-style-ajax-switch . 보시다시피 사용법 파일에 넣을 js 파일과 몇 줄의 js 코드가 있습니다. 아니면 다른 파일에 몇 줄의 코드를 넣을 수 있습니까?
Sebastian Corneliu Vîrlan

작은 자바 스크립트 작업을 위해 파일을 만들어야합니까? 사용 가능한 경우 skype를 추가 할 수 있습니까 : sebyku17?
Sebastian Corneliu Vîrlan

그것은 당신이하고 싶은 일, 어디서하고 싶은지 등에 달려 있습니다. 일반적으로 : 아니요, 외부 JS 파일을 사용할 필요가 없습니다. 그러나 원하는 경우 하나의 파일 안에 원하는 것을 넣을 수 있습니다 . 여러 기능이있는 경우 여러 파일이 필요하지 않습니다. 그러나 당신은 이미 이것을 이해했을 때 완전히 이해하지 못하고 이미 (IMHO는 상당히 복잡하고 경우에 따라 약간 과잉 입니다) 대답을 받아 들였습니다 . @Johannes는 공격하지 않습니다. ;)
tfrommen

1
@tf. 지금까지는 경계선 과잉이 될 수 있지만, 한 가지 코드는 커질 수 있고 또 다른 하나는 초기 질문에 "변수"에 대한 복수형이 언급되었습니다. 귀하의 답변은 똑같이 유효하므로 +1입니다.
Johannes Pille

2
wp_localize_script는 PHP 값을 Javascript 파일로 전달하는 데 사용되지 않는 강력한 기능입니다. Wordpress의이 강력한 기능에 대해 실제로 많은 사람들이 알고있는 것은 놀라운 일이 아닙니다.
Dwayne Charrington

1

귀하의 의견을 읽은 후 다음과 같이하고 싶습니다.

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

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

아니요,이 페이지는 funny-videoro.com/the-dark-knight-rises-trailer-oficial 입니다. 원하는 경우 웹 사이트에 로그인 할 수 있습니다. 그러면 jquery ios 스타일 버튼이 나타납니다. 슬라이드 오프 할 때 나는 게시물을 fb api로 삭제해야합니다. 게시물 ID는 db에 있습니다.
Sebastian Corneliu Vîrlan

글쎄, 그것은 기본적으로 내가 대답에 쓴 것입니다. 데이터베이스에서 ID를 검색하여 변수에 저장하십시오. 그런 다음 한 줄 JavaScript 함수 호출로 직접 인쇄하십시오. <input ... />과 그 기능은 목적을 설명하기위한이었다. 내가 당신을 이해하는 한, 당신이 필요로하는 모든 것이 있습니다. 그렇지 않은 경우 의견이 아닌 질문에 더 자세히 설명하십시오.
tfrommen

나는 같은 줄에 PHP와 JS 코드를 사용하고 싶지 않습니다, 워드 프레스에서 일부 자동 기능입니다 ...
Sebastian Corneliu Vîrlan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.