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.