it-swarm.com.de

Bestehen PHP variabel zu Javascript

Gibt es eine Möglichkeit, einige PHP -Variablen in Javascript zu übergeben, damit ich sie später verwenden kann?

Nur in single.php.
Ich habe von wp_enqueue_scripts gehört, aber damit ist es notwendig, einen Pfad zu einer JS-Datei anzugeben, aber ich brauche keinen.

Best-Practice-Methode

Schauen Sie sich wp_localize_script an, das genau das tun soll.

Aber es erfordert die vorherige Verwendung von wp_enqueue_scripts, daher müssen Sie Ihre JS in der Tat in eine separate Datei verschieben.
Die paar Minuten Mühe werden sich aber auf jeden Fall lohnen.

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

Im JS können Sie dann die übergebenen Parameter wie folgt verwenden:

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

[Bearbeiten] Deine Situation

Wie in Ihrem Kommentar erwähnt

Ich habe eine neue DB-Tabelle mit einigen response.ids von Facebook API erstellt. Dies ist die Tabelle: action_id, user_id, post_id, fb_id wobei fb_id response.id von einer Facebook-Aktion ist. Dann habe ich in single.php eine Schaltfläche, auf der ich, wenn ich drücke, die fb-Aktion mit api löschen muss: FB.api('/'+fb.response, 'delete'); wobei fb.responsefb_id aus der Tabelle sein sollte.

Legen Sie den folgenden Ordner für den /js/ Ihres Themas ab und erstellen Sie ihn, falls er nicht vorhanden ist.
Nennen wir die Datei fb-response.js:

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

Dann registrieren, einreihen und lokalisieren, wie oben gezeigt. Angenommen, Sie haben die ID, die Sie weitergeben möchten, sagen wir $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. Offensichtlich wird davon ausgegangen, dass es sich um ein Thema handelt. Wenn es sich um ein "Plugin" handelt, ändern Sie die Standorte entsprechend.

17
Johannes Pille

Nachdem Sie Ihren Kommentar gelesen haben, möchten Sie wie folgt vorgehen:

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

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