【问题标题】:Customising Wordpress Color Picker自定义 Wordpress 颜色选择器
【发布时间】:2014-04-11 07:56:14
【问题描述】:

有没有办法自定义 Wordpress 3.8 颜色选择器(在自定义字段类型上)以仅使用我将定义的颜色?

我只需要为客户提供 6 种颜色,但他们不想拥有所有这些颜色,除了 6 种渐变颜色。

将非常感谢任何帮助...我已经尝试了几天,但没有积极的解决方案:(

谢谢

【问题讨论】:

标签: wordpress colors color-picker picker


【解决方案1】:

Wordpress 3.5+ 使用 Iris 颜色选择器,其中有多个 options 可供使用。

初始化对象时,只需为 palettes 选项分配颜色数组即可。

var colorOptions = {
    // show a group of common colors beneath the square
    // or, supply an array of colors to customize further
    palettes: ['#4444,44','#ff2255','#559999','#99CCFF','#00c1e8','#F9DE0E','#111111','#EEEEDD']
};

jQuery('.my-color-picker-class').wpColorPicker(colorOptions);

【讨论】:

  • 嗨,非常感谢。我必须在我的主题/function.php 中添加它吗?或者创建一个新插件或者在 iis.min.js 中?
  • 没有。这是JS,不是 PHP。您可以将其添加为外部脚本并将其加入队列。根据您的问题(如何自定义调色板),我假设您已经知道如何整合它。基本上,只要它在页面上,用jQuery( document ).ready 或类似名称包裹并指向您的选择器,放在哪里都没有关系。
  • 您好,感谢您的进一步意见。好吧,我不太擅长 javascripts。但我现在所做的是将您的代码保存在我的主题中,并将其命名为 my.new.color.js。然后在我的function.php中,我尝试了下面的两个代码,但在帖子编辑器中仍然看到与以前相同的颜色
  • function my_scripts_color() { wp_enqueue_script( 'custom-script', get_stylesheet_directory_uri() . '/js/my.new.color.js', array( 'jquery' ) ); } add_action('wp_enqueue_scripts', 'my_scripts_color');
  • 就像我在回答中所写的那样 - 您必须将选择器调整到您的领域。还要确保您实际上调用的是相同的脚本(而不是在您的领域上运行的另一个距离......)
【解决方案2】:

如果您使用 TinyMCE 编辑器,您可以像这样修改调色板。

function my_mce4_options( $init ) {
    $custom_colours = '
        "e14d43", "Color 1 Name",
        "d83131", "Color 2 Name",
        "ed1c24", "Color 3 Name",
        "f99b1c", "Color 4 Name",
        "50b848", "Color 5 Name",
        "00a859", "Color 6 Name"
    ';

    $init['textcolor_map'] = '['.$custom_colours.']';

    // Set number of color rows
    $init['textcolor_rows'] = 3;
    // Set number of color columns
    $init['textcolor_cols'] = 2

    return $init;
}
add_filter('tiny_mce_before_init', 'my_mce4_options');

【讨论】:

  • 我可能遗漏了一些东西,但虹膜颜色选择器与微型 mce 颜色选择器不是不同吗?每个选择器都有单独的调色板集? IE。 tiny_mce_before_init 由经典的 Wordpress WYSIWYG 编辑器(文本颜色等)使用,Iris 颜色选择器用于 WP Customize API 和高级自定义字段等插件?
【解决方案3】:

我们需要将 wp_enqueue_script 脚本和 wp_enqueue_style 与 add_action 添加到 functions.php 文件中。只需通过此脚本包含一个 jQuery 文件和样式表文件。

// Register Scripts & Styles in Admin panel
function custom_color_picker_scripts() {
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script( 'iris', admin_url( 'js/iris.min.js' ), array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), false, 1 );
wp_enqueue_script( 'cp-active', plugins_url('/js/cp-active.js', __FILE__), array('jquery'), '', true );

}
add_action( 'admin_enqueue_scripts', custom_color_picker_scripts);

现在创建一个新的 javascript 文件,如 cp-active.js 并使用波纹管代码将其保留在定义的“/js/cp-active.js”文件路径中。

jQuery('.color-picker').iris({
// or in the data-default-color attribute on the input
defaultColor: true,
// a callback to fire whenever the color changes to a valid color
change: function(event, ui){},
// a callback to fire when the input is emptied or an invalid color
clear: function() {},
// hide the color picker controls on load
hide: true,
// show a group of common colors beneath the square
palettes: true
});

为您的设置页面添加一个文本框,其中包含颜色选择器的 CSS 类,您希望在其中显示输入文本。我使用“color_code”作为输入 $variable。

<input id="color_code" class="color-picker" name="color_code" type="text" value="" />

更多详情请查看Add jQuery Color Picker WordPress Theme or Plugin

【讨论】:

    【解决方案4】:

    这是一个快速而肮脏的解决方案:

    1. 转到 wp-admin/js/iris.min.js
    2. 在那里搜索调色板颜色(大约距文件开头的 1/3)。我发现了这个:
      _palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"]
    3. 用您自己的自定义颜色替换这些默认值。我留下了黑色和白色,然后添加了我们的品牌颜色而不是#d33 和其他颜色。
    4. 上传到服务器。

    暂时有效。但是如果这在下一次 Wordpress 更新中仍然存在,还没有尝试过。

    【讨论】:

    • 这将是一个非常糟糕的实现。正如您所暗示的 - 这不适用于颜色选择器的下一次更新
    • 不要那样做。永远不要修改核心文件。
    • @Outi - 不要因反对票而气馁。生活随着我们的学习而发生,我敢肯定,在您最初回答之后的这段时间里,您已经学到了很多
    猜你喜欢
    • 2018-07-20
    • 2013-07-18
    • 2020-10-14
    • 2013-02-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多