I want to display a Google Graph in a WordPress Page.
I’ve leared here that WordPress seems ok with Javascript.
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>
And the solution is … DO NOT LET EMPTY LINES in the javascript code in your Page
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.