it-swarm-vi.tech

Sửa đổi tệp JS với dữ liệu từ cài đặt plugin

Tôi có một plugin, trong số những thứ khác, có một tệp javascript yêu cầu một vài cài đặt cụ thể của người dùng. Điều gì sẽ là cách tốt nhất để đưa các cài đặt đó vào javascript từ các tham số cài đặt của plugin?

Nói cách khác, nếu tôi biến các cài đặt đó thành một phần của trang cài đặt nơi người dùng có thể nhập chúng, làm thế nào tốt nhất tôi có thể đưa các giá trị đó vào javascript? Tôi có phải sử dụng một cái gì đó để nối thêm một số thẻ script và đặt chúng thông qua PHP trên mỗi lần tải trang không? Đặt cookie sẽ là một cách tốt hơn để làm điều này?

8
Ryan Elkins

tốt hơn là, bạn sử dụng các chức năng của WP cho việc này, một ví dụ cho đa ngôn ngữ:

    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'    => __( 'Link with post', INPSYDE_P2M_TEXTDOMAIN ),
                'txtallnone' => __( 'Include in gallery:', INPSYDE_P2M_TEXTDOMAIN ),
                'txtall'     => __( 'All', INPSYDE_P2M_TEXTDOMAIN ),
                'txtnone'    => __( 'None', INPSYDE_P2M_TEXTDOMAIN ),
                'ttlcb'      => __( 'Include image in this gallery', INPSYDE_P2M_TEXTDOMAIN )
            );

        return $strings;
    }

sử dụng tệp này trong tệp 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 );

});

Đồng thời xem bài đăng từ Otto

9
bueltge

Có một số cách mà bạn có thể làm điều này, một trong số đó tôi đã làm trước đây, cách khác tôi chưa từng làm, nhưng tôi đã sử dụng cho các tệp cấu hình XML.

Đầu tiên là bao gồm các biến trong thẻ script bên trong tiêu đề hoặc chân trang WP, trước thẻ script nơi bạn bao gồm tệp JS của mình, ví dụ:

<script type="text/javascript">
    var test = "<?php echo "hello world"; /* the relevant PHP code to echo the data you require */ ?>";
    var slider_type = "<?php echo "nivo"; /* same again */ ?>";
</script>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/your_js_here"></script>

Cách khác là bao gồm JS bên trong tệp PHP được bao gồm bên trong thẻ script.

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>

Trong tệp này, bạn sẽ bao gồm javascript của mình và vì PHP sẽ phân tích cú pháp, bạn có thể bao gồm các cuộc gọi PHP theo cách tương tự như trên, chỉ cần lặp lại dữ liệu/tùy chọn bạn yêu cầu Một điều cần lưu ý là bạn có thể cần đặt các tiêu đề cho đầu ra là text/javascript.

Cá nhân tôi rất thích phương pháp đầu tiên và là những gì tôi sử dụng khi tôi có các cài đặt có thể thay đổi người dùng ảnh hưởng đến các tệp javascript.

1
nobody