Generates Graphviz graphics using shortcodes. Supports almost all Graphviz features.
|Author:||Chris Luke (profile at wordpress.org)|
|WordPress version required:||4.2.0|
|WordPress version tested:||4.8.2|
|Added to WordPress repository:||22-11-2010|
|Total downloads:||2 078|
Click to start download
Installation is simple. Either install from directly within WordPress or:
- Download and unzip the plugin to the
/wp-content/plugins/tfo-graphvizdirectory within your WordPress installation.
- Make the directory
/wp-content/tfo-graphvizand make it writable by the web server – this is where generated images and image maps go.
- Activate the plugin through the ‘Plugins’ menu in WordPress.
- Choose a generation method on the plugin settings page.
- Use the
[graphviz]shortcode to generate graphs.
You need access to a Graphviz renderer:
- By using a local installation of Graphviz and the
- By using a local installation and PHP bindings to the library.
See the FAQ for more details on these options and http://www.graphviz.org/Download.php for details on installing Graphviz on your web server.
What is Graphviz?
Graphviz is a way of generating visualisations of structural relationships between objects. Almost any kind of diagram where something connects to something else can be drawn and automatically laid out using the language DOT.
How do I use this plugin?
[graphviz] shortcode. Details are in the Description section.
How to I write DOT?
There are however several other introductions to Graphviz and DOT, including an excerpt on the O’Reilly LinuxDevCenter.com site. Another approach would be to look at the examples in the Graphviz gallery.
Users should note that DOT syntax varies between Graphviz processors and also between versions of those processors. If in doubt, find an example and experiment with it.
Where can I see examples?
Can I manipulate the rendered graph using CSS in my WordPress theme?
img elements are tagged with ‘
Nothing is being rendered, maybe my DOT is broken?
If you’re using a local Graphviz renderer then errors from Graphviz should be presented where you expect the graph to appear. Note that because of how WordPress submits content to plugins the line numbering will not always match what you expect.
The error message when using the
dot binary will contain the command line used as well as a line-numbered copy of the DOT that was used.
I’m getting strange errors that make no sense, what gives?
WordPress encodes HTML entities inside the shortcode block which this plugin attempts to demangle.
Unfortunately WordPress can also try to do smart character replacement, such as “…” into a UNICODE ellipsis character. The Graphviz plugin contains a mapping of many of these back to their ASCII equivalents, but it may not be complete. Let us know if you think this is breaking your DOT. It’s also possible that non-ASCII7 characters do strange things too.
define("TFO_GV_DEBUG", true) to wp_config.php will cause the plugin to create some diagnostic files in your system
tmp directory. The file
pre-N.dot is the contents of the DOT as given to the plugin by WordPress,
post-N.dot is the results of the plugin attempting to demangle it. The
N is a number that is incremented for each shortcode section interpreted. The plugin does not clean these files up.
How do I install the Graphviz program (not this plugin) locally?
This depends on your local operating system. You will find some details at http://www.graphviz.org/Download.php but many systems also have it in their own package management system, for example this is package
graphviz on Debian, Ubuntu and Fedora systems.
There are currently two ways to use a local installation of Graphviz. The settings page will only show options for those
methods that are actually available and configured correctly.
- Using a local Graphviz installation and the
dotbinary. You configure the path to this binary on the admin settings page of the plugin.
- Using PHP bindings to the Graphviz library. This requires that
I’ve installed the PHP bindings but Graphviz doesn’t work!
This requires that
gv.php is available and that the associated module is either already loaded or loadable with
The use of
dl() is often disabled in
php.ini and doesn’t work on multithreaded webservers; it’s entirely disabled in modern Apache2 httpd modules.
For these cases you must ensure the library is loaded with an entry like
extension=gv.so or similar somewhere in the PHP configuration.
- Validate graph language and output format.
- Some sanity checking in the PHP bindings method.
- Document the need to specify both a shortcode
idand a DOT graph name.
- Tested up to WP 4.7.2
- Finally worked out how to disable wptexturize! Less demangling now required.
- Better diagnostic output when running
dotdoesn’t work, including the command line used and adding the DOT as submitted, with line numbers. (Joachim Durchholz)
- Add more de-mangling rules, for smart quotes and ellipsis. (Joachim Durchholz)
- Improve the newline de-mangling. (Joachim Durchholz)
- Add the SVG output format. See http://blog.flirble.org/2015/11/15/adding-svg-support-tfo-graphviz/ for example. (Joachim Durchholz)
- Add a fix for if the requires GV class isn’t loadable, such as when GV gets upgraded on the system. (Sam Wilson)
attribute_escape()have both been deprecated. Migrate to
esc_url()and esc_attr()`. (Sam Wilson)
- Remove deprecated constructor definitions. (Sam Wilson)
- Testing against 4.3.
- Require at least WP 4.2 now.
- Fix use of
add_query_arg()to escape its output; a possible XSS vector.
- Added GPL v2 license information.
- Make some debugging output conditional.
- Fix where that debugging output is stored. (Sam Wilson)
- Fix a packaging error in 1.7.
- Fix use of hardcoded “/tmp” path. (Sam Wilson)
- Test upto WP 4.2.2.
- Change an
rename()instead. (Sam Wilson)
- Code documentation improvement.
- Some reformatting.
- Fix some cosmetic documentation issues.
- Update documentation for using the PHP gv bindings.
- WordPress 4.0 support.
- Fix for PHP Graphviz module loading; newer PHP’s don’t allow dl() at all in some cases, we should therefore detect this.
- Use WP_Error properly.
- Liberal use of try/catch to detect runtime issues.
- No changes; version bump for the later 3.x series.
- Removed leftover diagnostic code in PHP render class (which was appearing in posts!)
- Added remote Graphviz rendering support. Note that this is still young and will add a mark to the graph indicating it was generated by this plugin.
- Tested on WordPress 3.0.2 and 3.0.3.
- Added support for locally installed PHP bindings to the Graphviz library. This only works if PHP either allows dl() to load a module or gv.so/dll is staticly configured to load in php.ini.
- Made render module selection somewhat more robust.
- Attempt to create our wp-content/tfo-graphviz directory if it doesn’t already exist.
- Better (as in, “any at all”) error generation in the shortcode handler.
- Add content expiration – configurable. Will remove files from the wp-content/tfo-graphviz directory, but only if the threshold is >0 and older than the threshold.
- First release.