Site logo

Archived topic

Bulk Add Colors to the Customiser

3 replies · Started by Zlatan on January 28, 2023

Viewing posts 1–4 of 4

Hi,

is there a way to add a lot of colors to the customiser at once?
I have them in this format and there are about 36 defined colors:

accents-plus-200: #FF7B59;
accents-plus-300: #FFB069;
accents-plus-400: #FCD936;

I am sorry if this has been answered somewhere else, but I did not find anything.

kind regards,
Zlatan

Hi there,

if you go to Settings > GeneratePress you can export the Global Colors.
It will provide a .json file.
You can edit that in a desktop IDE or an online JSON editor.

The code will look something like this:

{
  "global-colors": [
    {
      "name": "contrast",
      "slug": "contrast",
      "color": "#222222"
    },
    {
      "name": "contrast-2",
      "slug": "contrast-2",
      "color": "#575760"
    },
    {
      "name": "contrast-3",
      "slug": "contrast-3",
      "color": "#b2b2be"
    },
    {
      "name": "base",
      "slug": "base",
      "color": "#f0f0f0"
    },
    {
      "name": "base-2",
      "slug": "base-2",
      "color": "#f7f8f9"
    },
    {
      "name": "base-3",
      "slug": "base-3",
      "color": "#ffffff"
    },
    {
      "name": "accent",
      "slug": "accent",
      "color": "#1e73be"
    },
    {
      "name": "global-color-8",
      "slug": "global-color-8",
      "color": ""
    }
  ]
}

You would need to add a block for each color:

{
    "name": "contrast-2",
    "slug": "contrast-2",
    "color": "#575760"
},

Save the json and then import it into GP.... but to be honest i am not sure if that would be any quicker then adding them in the customizer

I greatly appreciate your help. I totally forgot bout the export/import feature.

I did some googling and experimented with some JavaScript code to find a solution that worked for me. I created a basic HTML page with JavaScript that converted my input into the JSON format. I then copied and pasted the result into a JSON file and imported it into GeneratePress. It worked perfectly for my problem.

Would have been quicker if I added it manually, though :D But at least I learned new stuff :)

Here is the code, if anyone is interested

<!DOCTYPE html>
<html>
<head>
  <title>Color Form</title>
  <script>
    function updateJSON() {
      var newColors = document.getElementById("new-colors").value;
      var colorArray = newColors.split("\n");
      var globalColors = JSON.parse(document.getElementById("global-colors").innerHTML);
      for (var i = 0; i < colorArray.length; i++) {
        var color = colorArray[i].split(":");
        globalColors["global-colors"].push({
          "name": color[0].trim(),
          "slug": color[0].trim(),
          "color": color[1].trim()
        });
      }
      document.getElementById("global-colors").innerHTML = JSON.stringify(globalColors, null, 2);
    }
  </script>
</head>
<body>
  <h1>Add New Colors</h1>
  <form>
    <textarea id="new-colors" rows="10" cols="30"></textarea><br>
    <button type="button" onclick="updateJSON()">Add Colors</button>
  </form>
  <pre id="global-colors">
{
  "global-colors": [
    {
      "name": "black",
      "slug": "black",
      "color": "#000000"
    }
  ]
}
  </pre>
</body>
</html>

thats awesome - and thank you for sharing this :)

This archived topic is closed to new replies.