[英]using a global php array in an external .js file
我正在為wordpress建立主題框架,但遇到了一個小問題。
我有一個定義的$ globals數組,用於存儲當前已注冊的帖子類型以及主題布局選項頁面的一些特殊頁面。
$GLOBALS['gc_frame_postTypes'] = array('homepage', 'blog');
$post_types = get_post_types( '', 'names' );
foreach ( $post_types as $post_type ) {
if ($post_type != "revision" && $post_type != "nav_menu_item" && $post_type != "attachment")
$GLOBALS['gc_frame_postTypes'][] = $post_type;
}
我在我的選項頁面上使用了此功能,它可以正確創建所有正確的選項。
我遇到的問題是當我嘗試應用JavaScript來改善頁面的外觀和功能時。
這是可以執行我想要的功能的.js代碼。 它根據選定的布局顯示和隱藏字段。
jQuery(document).ready(function() {
// keeps the new sidebar text block blank
jQuery("#gc_frame_sidebar_name_new").val("")
// Homepage layout Function call
jQuery.fn.layoutSidebars('homepage');
// page layout Function call
jQuery.fn.layoutSidebars('page');
// blog layout Function call
jQuery.fn.layoutSidebars('blog');
// post layout Function call
jQuery.fn.layoutSidebars('post');
// Homepage layout Function call on change
jQuery('#gc_frame_homepage_layout').change(function(){
jQuery.fn.layoutSidebars('homepage');
});
// page layout Function call on change
jQuery('#gc_frame_page_layout').change(function(){
jQuery.fn.layoutSidebars('page');
});
// blog layout Function call on change
jQuery('#gc_frame_blog_layout').change(function(){
jQuery.fn.layoutSidebars('blog');
});
// post layout Function call on change
jQuery('#gc_frame_post_layout').change(function(){
jQuery.fn.layoutSidebars('post');
});
});
jQuery.fn.layoutSidebars = function(pageType){
pageLayout = jQuery("#gc_frame_" +pageType+ "_layout").val();
if (pageLayout == 'fullwidth'){
jQuery("label[for^='gc_frame_" +pageType+ "_left_sidebar_']").closest('tr').hide();
jQuery("#gc_frame_" +pageType+ "_left_sidebar_count").val(0);
jQuery("label[for^='gc_frame_" +pageType+ "_right_sidebar_']").closest('tr').hide();
jQuery("#gc_frame_" +pageType+ "_right_sidebar_count").val(0);
} else if (pageLayout == 'SB-L') {
jQuery("label[for='gc_frame_" +pageType+ "_left_sidebar_count']").closest('tr').show();
jQuery("label[for^='gc_frame_" +pageType+ "_right_sidebar_']").closest('tr').hide();
jQuery("#gc_frame_" +pageType+ "_right_sidebar_count").val(0);
} else if (pageLayout == 'SB-R') {
jQuery("label[for^='gc_frame_" +pageType+ "_left_sidebar_']").closest('tr').hide();
jQuery("#gc_frame_" +pageType+ "_left_sidebar_count").val(0);
jQuery("label[for='gc_frame_" +pageType+ "_right_sidebar_count']").closest('tr').show();
} else if (pageLayout == 'SB-LR') {
jQuery("label[for='gc_frame_" +pageType+ "_left_sidebar_count']").closest('tr').show();
jQuery("label[for='gc_frame_" +pageType+ "_right_sidebar_count']").closest('tr').show();
}
}
我想做的是將上述全局數組放入javascript中,這樣,如果添加了新的自定義帖子類型,它們也會受到javascript的影響。
我目前有2個文件包含php和javascript,並且我不知道如何將信息從php文件獲取到javascript。
任何幫助都會很棒
您應該使用$_SESSION
變量在頁面內共享信息。
在您的首頁中,在加載javascript文件之前:
session_start();
$_SESSION['globalVar'] = Value;
在您的外部javascript文件(擴展名為.php)中,您可以像這樣:
<?php session_start(); //at the top of your JavaScript?>
...
var globalVar = '<?php echo $_SESSION['globalVar']; ?>'
...
您可以使用wp_localize_script()
這是一個很好的資源: http : //pippinsplugins.com/use-wp_localize_script-it-is-awesome/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.