javascript - WordPress 自定义主题 : mixing php and javaScript?

标签 javascript php wordpress wordpress-theming custom-controls

我正在构建一个自定义 wordpress 主题,我正在尝试添加一些 JavaScript 函数。 我要添加的主要功能是一个随时间改变颜色的 div。它更改为的颜色由自定义寄存器中的主题颜色设置定义。我已经通过我的 functions.php 添加了这些颜色设置框,如下所示:

 $wp_customize->add_setting('color1', array('default' => '#000000', 'transport'=>'refresh',));    
 $wp_customize->add_control(new WP_Customize_Color_Control($wp_customize, 'color1_CNTL', array(
        'label'     => __('Color 1', 'myTheme'), 
        'section'   => 'colors', 
        'settings'  => 'color1',)));

所有这些都工作正常,我可以在我的管理页面上的自定义注册中使用它。现在,我唯一想知道的是,如何在我的 javaScript 代码中使用颜色 1 的值?我知道如果我想在 css 中使用它,我只需要使用

<?php echo get_theme_mod('color1'); ?>

但这在 JavaScript 中不起作用。有任何想法吗?

最佳答案

“WordPress 方式”是本地化脚本。

利用wp_localize_script

概述:

  1. 在您的主题中注册一个脚本(通常在您的 functions.php 中 文件)。看这里: wp_enqueue_script
  2. 本地化脚本
  3. 然后,通过您的 javascript 访问该值。

最小的完整示例(从 WP 文档编译):

PHP:

add_action('wp_enqueue_scripts', 'my_theme_scripts');

function my_theme_scripts() {
    // Register the script first.
    wp_register_script( 'some_handle', 'path/to/myscript.js' );

    // Now we can localize the script with our data.
    $color_array = array( 'color1' => get_theme_mod('color1'), 'color2' => '#000099' );
    wp_localize_script( 'some_handle', 'object_name', $color_array );

    // The script can be enqueued now or later.
    wp_enqueue_script( 'some_handle' );
}

Javascript(在您的“myscript.js”文件中);

// Access the color via the object name defined in localize_script
var color = object_name.color1;

关于javascript - WordPress 自定义主题 : mixing php and javaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763442/

相关文章:

javascript - 如何使用 javascript 或 java 获取当前 url 用户位于 .jsp 文件中

PHP exec() 在通过浏览器执行时不会执行 shell 命令

php - MySQL 查询在 phpmyadmin 中有效,但在 PHP 结果集中没有返回行

database - 我的 MAMP Pro 试用期已过期,现在我的 Wordpress 安装不起作用,有什么想法吗?

javascript - WordPress - fatal error : "Call to a member function get_var() on a non-object" but only if not as Template

javascript - 类型和 OO 耦合了吗?

javascript - 强制 DOM 替换触发显示动画

javascript - 如何比较格式为 dd/mm/yyyy hh :mm:ss in jquery 的两个日期

php - 同步同一 MySQL 数据库中不同表中的两行

php - 如何为 WooCommerce 中的未登录用户禁用特定插件?