Google Charts in WordPress

I want to display a Google Graph in a WordPress Page.

I’ve leared here that WordPress seems ok with Javascript.

Read More

So I’ve created a Page with a basic code in it (it’s the GCharts’example). My page looks like :

    <!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

  // Load the Visualization API and the piechart package.
  google.load('visualization', '1.0', {'packages':['corechart']});

  // Set a callback to run when the Google Visualization API is loaded.
  google.setOnLoadCallback(drawChart);

  // Callback that creates and populates a data table,
  // instantiates the pie chart, passes in the data and
  // draws it.
  function drawChart() {

    // Create the data table.
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Topping');
    data.addColumn('number', 'Slices');
    data.addRows([
      ['Mushrooms', 3],
      ['Onions', 1],
      ['Olives', 1],
      ['Zucchini', 1],
      ['Pepperoni', 2]
    ]);

    // Set chart options
    var options = {'title':'How Much Pizza I Ate Last Night',
                   'width':400,
                   'height':300};

    // Instantiate and draw our chart, passing in some options.
    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }
</script>
 <div id="chart_div"></div>

Unfortunately, nothing is displayed on my site.

Has someone an idea of what’s going on ?

Thanks

EDIT :

I’ve found out that there is something with the <[CDATA[ tag added by WordPress. in my code, this tag may be broken by a “]” character, and that would cause the problem.

Here is the firebug info :

syntax error


google.setOnLoadCallback(drawChart);</p>

?page_id=22 (line 88, col 43)

the

is not present in my code !!

I noticed that when I hit “update” in my page, the code changes to :

<script type="text/javascript">// <![CDATA[
          // Load the Visualization API and the piechart package.
          google.load('visualization', '1.0', {'packages':['corechart']});
          // Set a callback to run when the Google Visualization API is loaded.
          google.setOnLoadCallback(drawChart);

          // Callback that creates and populates a data table,
          // instantiates the pie chart, passes in the data and
          // draws it.
          function drawChart() {

            // Create the data table.
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Topping');
            data.addColumn('number', 'Slices');
            data.addRows([
              ['Mushrooms', 3],
              ['Onions', 1],
              ['Olives', 1],
              ['Zucchini', 1],
              ['Pepperoni', 2]
            ]);

            // Set chart options
            var options = {'title':'How Much Pizza I Ate Last Night',
                           'width':400,
                           'height':300};

            // Instantiate and draw our chart, passing in some options.
            var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
// ]]></script>

Related posts

Leave a Reply

2 comments

  1. If you are okay with having unfiltered HTML on your WP installation, you can try this plugin:

    http://pp19dd.com/wordpress-plugin-include-custom-field/

    As the name suggests, it lets you use shortcodes to insert custom fields inside posts. You create a new custom field, call it “chart”, dump all that JavaScript and HTML in there.

    Then, in your wordpress post, just type [include chart] wherever you want it in the text. This shortcode should let you neatly separate the useful but picky WYSIWYG editor and the tender, breakable parts.