जावास्क्रिप्ट के लिए PHP चर पास


13

क्या जावास्क्रिप्ट में कुछ PHP चर पास करने की कोई संभावना है ताकि मैं बाद में उनका उपयोग कर सकूं?

केवल में single.php
मैंने इसके बारे में सुना है wp_enqueue_scriptsलेकिन इसके साथ ही जेएस फाइल के लिए एक मार्ग घोषित करना आवश्यक है, लेकिन मुझे इसकी आवश्यकता नहीं है।


आप बाद में क्या करते हैं , और आप चर का उपयोग कहां करना चाहते हैं (PHP चरों के संबंध में) आप निश्चित रूप से PHP के माध्यम से जावास्क्रिप्ट कोड को प्रतिध्वनित / प्रिंट कर सकते हैं, और इस प्रकार PHP चर मान डाल सकते हैं। लेकिन यह वह नहीं है जो आप चाहते हैं, मुझे लगता है ...
tfrommen

मैंने फेसबुक एपीआई से कुछ response.id`s के साथ एक नई db टेबल बनाई। यह तालिका है: action_id, user_id, post_id, fb_id जहाँ fb_id प्रतिक्रिया है। facebook कार्रवाई से। तब single.php में मेरे पास एक बटन होता है जहां अगर मैं दबाता हूं तो मुझे एपीआई के साथ एफबी कार्रवाई को हटाना होगा: FB.api ('/' + + fb.response, 'delete'); जहां टेबल से fb.response fb_id होना चाहिए।
सेबस्टियन कार्नेलियु व्रलान

जवाबों:


18

सर्वोत्तम अभ्यास विधि

एक नज़र है wp_localize_script, जो वास्तव में ऐसा करने के लिए है।

लेकिन इसके लिए पिछले उपयोग की आवश्यकता होती हैwp_enqueue_scripts , इसलिए आपको अपने जेएस को वास्तव में एक अलग फाइल में ले जाना होगा।
यह उन कुछ मिनटों के प्रयास के लायक होगा, हालांकि, निश्चित रूप से।

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

जेएस में आप तब जैसे पारित मापदंडों का उपयोग करने में सक्षम होंगे:

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फेसबुक एपीआई से कुछ एस के साथ एक नई डीबी टेबल बनाई । यह तालिका है: action_id, user_id, post_id, fb_id जहाँ fb_id प्रतिक्रिया है। facebook कार्रवाई से। तब single.php में मेरे पास एक बटन होता है जहां अगर मैं दबाता हूं तो मुझे एपीआई के साथ एफबी कार्रवाई को हटाना होगा: FB.api('/'+fb.response, 'delete');जहां तालिका से fb.responseहोना चाहिए fb_id

अपनी थीम के /js/फ़ोल्डर को नीचे रखें , इसे बनाएं, यदि यह मौजूद नहीं है।
आइए फाइल को कॉल करें fb-response.js:

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

फिर रजिस्टर, एनक्यू और स्थानीयकरण जैसा कि ऊपर देखा गया है। मान लें कि आपके पास वह आईडी है जिसे आप कहना चाहते हैं $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 ) );

एनबी जाहिर है, ऊपर मान रहा है कि यह एक विषय में है। यदि हम "प्लगइन" बात कर रहे हैं, तो तदनुसार स्थानों को बदल दें।


मैं इसमें थोड़ा भिखारी हूं, इसलिए मैं इसे अपने वर्डप्रेस पर लागू करने की कोशिश करता हूं: papermashup.com/jquery-iphone-style-ajax-switch । जैसा कि आप देख सकते हैं कि उपयोग फ़ाइल में डालने के लिए एक js फ़ाइल और js कोड की कुछ पंक्तियाँ हैं। या मैं कोड की कुछ पंक्तियाँ किसी अन्य फ़ाइल पर रख सकता हूँ?
सेबस्टियन कोर्नेलियु व्रलान

तो किसी भी छोटी जावास्क्रिप्ट कार्रवाई के लिए मुझे एक फ़ाइल बनानी चाहिए? यदि आप avaible हैं, तो आप स्काइप पर जोड़ सकते हैं: sebyku17?
सेबस्टियन कार्नेलियु व्रलान

यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं, जहाँ आप ऐसा करना चाहते हैं, इत्यादि। आम तौर पर: नहीं, आपको बाहरी JS फ़ाइल का उपयोग करने की आवश्यकता नहीं है। लेकिन अगर आप चुनते हैं, तो आप एक सिंगल फाइल के अंदर जो चाहें डाल सकते हैं । यदि आपके पास कई कार्य हैं, तो कई फ़ाइलों की आवश्यकता नहीं है, यदि आप पूछ रहे हैं। हालांकि, अगर आप पहले से ही इस (IMHO काफी जटिल है और थोड़ा अपने मामले में स्वीकार किए जाते हैं overkill , पूरी तरह से समझ बिना के रूप में मैं इसे ले - एक तरह से) जवाब। कोई अपराध नहीं, @ जोहान्स। ;)
tfrommen

1
कोई नहीं लिया, @tf। अब तक यह बॉर्डरलाइन ओवरकिल हो सकता है, लेकिन एक के लिए उसका कोड बढ़ सकता है और दूसरे के लिए, प्रारंभिक प्रश्न बहुवचन में "चर" की बात करता है। आपका उत्तर केवल उतना ही मान्य है, इसलिए मुझसे +1 है।
जोहान्स पाइल

2
wp_localize_script जावास्क्रिप्ट मानों को जावास्क्रिप्ट फ़ाइल में पारित करने के लिए एक बहुत ही अप्रयुक्त और शक्तिशाली कार्य है। यह आश्चर्यजनक नहीं है कि बहुत से लोग वास्तव में Wordpress में इस शक्तिशाली विशेषता के बारे में जानते हैं।
ड्वेन चारिंगटन

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 एपीआई पोस्ट के साथ हटाना होगा। पोस्ट आईडी db में है।
सेबस्टियन कोर्नेलियु व्रलान

खैर, यह वही है जो मैंने अपने उत्तर में लिखा था। डेटाबेस से आईडी को पुनः प्राप्त करें और इसे एक चर में संग्रहीत करें। फिर सीधे इसे अपने एक-लाइन जावास्क्रिप्ट फ़ंक्शन कॉल में प्रिंट करें। <input ... />और अपने कार्य केवल उन उद्देश्यों के प्रदर्शन करने के लिए किया गया था। जहाँ तक मैंने आपको समझा, वहाँ सब कुछ है जो आपको चाहिए। यदि नहीं, तो कृपया कुछ और समझाने की कोशिश करें, लेकिन आपके सवाल में नहीं, टिप्पणियों में।
tfrommen

मैं एक ही लाइन में php और js कोड का उपयोग नहीं करना चाहता, WordPress में कुछ स्वचालित रूप से कार्य कर रहे हैं ...
सेबस्टियन कॉर्नेलु व्रलान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.