Modificarea unui fișier JS cu date din setările pluginului
Am un plugin care, printre altele, are un fișier javascript care necesită câteva setări specifice utilizatorului. Care ar fi cea mai bună metodă de a obține acele setări în javascript din parametrii de setare ai pluginului?
Cu alte cuvinte, dacă fac acele setări parte din pagina de setări unde utilizatorul le poate introduce, cum aș putea să obțin aceste valori în javascript? Ar trebui să folosesc ceva pentru a adăuga niște tag-uri script și să le setez via PHP la fiecare încărcare de pagină? Ar fi mai bine să setez un cookie pentru asta?

mai bine este să folosești funcțiile WordPress pentru asta, un exemplu pentru multilingvism:
add_action( 'admin_enqueue_scripts', 'add_scripts' );
function add_scripts($where) {
wp_localize_script( 'post2media', 'post2media_strings', $this->localize_vars() );
}
function localize_vars() {
$strings = array(
'btntext' => __( 'Legătură cu articolul', INPSYDE_P2M_TEXTDOMAIN ),
'txtallnone' => __( 'Include în galerie:', INPSYDE_P2M_TEXTDOMAIN ),
'txtall' => __( 'Toate', INPSYDE_P2M_TEXTDOMAIN ),
'txtnone' => __( 'Niciunul', INPSYDE_P2M_TEXTDOMAIN ),
'ttlcb' => __( 'Include imaginea în această galerie', INPSYDE_P2M_TEXTDOMAIN )
);
return $strings;
}
folosește asta în fișierul js:
jQuery(function ($) {
buttonaddfunc = function() {
btntext = post2media_strings.btntext;
reg = /\d+/;
$( '.savesend > .button' ) . each( function() {
inputname = $( this ) . attr( 'name' );
number = reg . exec( inputname );
$( this ) . after( '<input type="submit" value="' + btntext + '" name="link[' + number + ']" class="button">' );
} );
$( '.describe-toggle-on' ).unbind( 'click', buttonaddfunc );
};
$( '.describe-toggle-on' ).bind( 'click', buttonaddfunc );
} );
Vezi și articolul de la Otto

Nu am înțeles prea bine codul tău, dar am găsit link-ul foarte util.

Acest lucru este într-adevăr excelent, mulțumesc! M-am întrebat cum să fac asta de foarte mult timp; mulțumesc! Am vrut să întreb pe lista wp-hackers dar nu am făcut-o niciodată. Mulțumesc din nou.

Puteți vedea pe ultimul meu plugin post2media (http://wordpress.org/extend/plugins/post2media/) pentru a vedea un exemplu de plugin live; plugin-ul nu are prea mult cod sursă și cred că este minunat pentru citirea codului sursă și înțelegerea soluției.

Iată un exemplu mai simplu care se reduce la elementele de bază (în exemplul tău se întâmplă prea multe): http://www.prelovac.com/vladimir/best-practice-for-adding-javascript-code-to-wordpress-plugin

Deoarece linkul nu mai funcționează, iată articolul original: https://web.archive.org/web/20190422164736/http://ottopress.com/2010/dont-include-wp-load-please/ și un altul foarte util: https://web.archive.org/web/20190429195119/http://ottopress.com/2010/passing-parameters-from-php-to-javascripts-in-plugins

Există câteva moduri în care ai putea face acest lucru, unul dintre ele l-am folosit anterior, iar celălalt nu, dar l-am utilizat pentru fișiere de configurare XML.
Prima metodă este să incluzi variabilele într-un tag script în header-ul sau footer-ul WP, înainte de tag-ul script unde incluzi fișierul tău JS, de exemplu:
<script type="text/javascript">
var test = "<?php echo "hello world"; /* codul PHP relevant pentru a afișa datele necesare */ ?>";
var slider_type = "<?php echo "nivo"; /* la fel ca mai sus */ ?>";
</script>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/your_js_here"></script>
Cealaltă alternativă ar fi să incluzi JS-ul într-un fișier PHP care este inclus în interiorul unui tag script.
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>
În acest fișier ai putea include javascript-ul tău, iar cum PHP ar parsa fișierul, ai putea include apeluri PHP într-un mod similar cu cel de mai sus, pur și simplu afișând datele/opțiunile de care ai nevoie. Un lucru de notat este că poate fi necesar să setezi headerele pentru output ca text/javascript
.
Personal, prefer prima metodă și este ceea ce folosesc atunci când am setări modificabile de utilizator care afectează fișierele javascript.
