The macro XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL_FULL can take two callbacks, a preinit and a check function. Both, when returning FALSE will deny to run the plugin, thus not showing up in the panel and not been executed. However the configuration file ${XDG_CONFIG_HOME}/xfce4/panel/panels.xml will be modified with a new item of the plugin that failed to start. What should be done: clean up the plugin that failed to start from the item elements WRT the preinit/check callbacks. Another case is the when you have an item in the panels.xml file, but when you start the panel and the plugin fails to register because it returns FALSE in either preinit/check callback, it will be kept in the panels.xml file.
Should work in the devel panel (we handle the child exit status now, would be nice if someone can actually test this).
Devel branch has been merged in master. A 4.7.0 release will follow soon. If you think this bug is not fixed? Feel free to reopen the bug.
Ugh, what a bad description :) I tried it again, and indeed the plugin doesn't run but it is kept in the configuration file. I'm not sure this is actually a bug. If the plugin returns false in the preinit call it doesn't say that it has to be "removed" from the panel, and plus now you have the items editable within the panel configuration! IMO just keep this bug as resolved.