There are many reasons why you might want to create your own plugin, especially the one that would bring you new integration between Ziggeo and some other service.

If any of the answers are true, you want to continue reading and make your integration:

  1. Are you looking to add Ziggeo to some pages from a specific plugin?
  2. Want to customize how something works?
  3. Consider making something that will help others?
  4. Think it would look cool in your resume?
  5. Want to have your own integration for your Ziggeo certification?

The biggest plus is the modularity of it. If you add your codes into your functions.php file of your theme, or better yet of your child theme that is great. What happens if you want to change something?

Well you need to go into the code.

With your own plugin, regardless of how simple it is, you can just disable it in WordPress admin and that is it.

Your plugin then offers you:

  1. Easy way to enable / disable entire code base
  2. To add settings that you can further fine tune
  3. Code that is easy to manage
  4. Relaxing feeling when any updates are to happen.

The best way to start is by absorbing the WordPress developer's guidelines for the plugins. You can find it here. We will take it that you already know all that and that you want to know more about our plugin.

The best way to start then is to use one or more hooks in your plugin that will allow you to integrate / connect with service of your choice.

We will show you all hooks in the following sections.

In WordPress there are 2 types of hooks. Ones are actions and the other are known as filters.

The difference between the two is that actions are used when you can take some action based on the info provided.

Filters on the other hand will return back some value, so you can go through the text for example or options, change them and return modified result.

With filters you always want to return some value, or you will effectively be removing the value completely.

  1. ziggeo_toolbar_button / (bool) $ajax
  • passes bool value $ajax which will tell you if the request was made over Ajax or not
  1. ziggeo_list_integration
  • Allows you to add your plugin to the Integrations list within the core plugin. This requires a specific code to be run. See more in "Register your plugin as an integration" section
  1. ziggeo_settings_before_editor / (array) $templates
  • Fires right before the template editor is shown with the list of template bases that will be shown as available.
  1. ziggeo_assets_post
  • Fires once all of the assets are registered within WordPress scripts and styles catalog.
  1. ziggeo_add_to_ziggeowp_object
  • Fires within the JS ZiggeoWP object, allowing you to add codes that are specific to your plugin and Ziggeo into the same scope.
  1. ziggeo_get_user_modify / (get_currentuserinfo return value) $current_user
  • Fires every time our plugin is trying to see the user permissions. You can use to modify the
  1. ziggeo_setting_available_templates / (array) $templates
  • Fires within the admin pages allowing you to add your own template base into the templates editor
  1. ziggeo_ajax_call_client / (string) $rez, (string) $operation
  • This is called when AJAX request is made. By default the $rez is empty string and operation is passed by AJAX to help detect if your code should react to it.
  • This fires for visitors that are not logged in.
  1. ziggeo_ajax_call / (string) $rez, (string) $operation
  • This is called when AJAX request is made. By default the $rez is empty string and operation is passed by AJAX to help detect if your code should react to it.
  • This fires for visitors that are logged in.
  1. ziggeo_assets_init_raw / (array) $options
  • Allows you to do temporary change of plugin options and affect the values that are used when creating asset links. This is for functions that require this outside of WordPress asset handling functions and fires before any handling.
  1. ziggeo_assets_init_raw_post / (array) $result
  • Same as above, however fires after all asset links have been constructed, so you can modify them then.
  1. ziggeo_assets_init / (array) $options
  • Fires when the assets are handled by WordPress, before any handling, so you can temporarily modify the plugin settings
  1. ziggeo_assets_pre_server_load / (bool) true
  • Allows you to hook in and return false if you want to stop our resources from being loaded. Generally not recommended, available if needed for some specific types of integrations.
  1. ziggeo_assets_pre_local_load / (bool) true
  • Allows you to hook in and return false if you want to stop the plugin resources from being loaded. It would disable the plugin specific js and css files, allowing you to use your own functions on some specific pages instead.
  1. ziggeo_setting_header_code / (array) $options
  • Allows you to temporarily change the plugin settings before the codes are outputted to the HTML element.
  1. ziggeo_custom_tags_processing / (mixed) $content
  • Allows you to parse any custom tags that you add into the embedding, which you can then replace before it is used on the page.
  1. ziggeo_content_filter_pre / (mixed) $content
  • The hook fires before any filtering happens. At this point we do not even know if there is any Ziggeo template in there. Useful if you want to add one after every content there is for example.
  1. ziggeo_content_filter_post / (mixed) $content
  • The hook fires after any filtering happened by our plugin. We know it was all checked before, however do not know if any processing was done or not. Possibly useful if you want to add something that avoids our parsers.
  1. ziggeo_template_parsing_tag_set / (string) $location_tag, (string) $filter
  • Gives you info about the location (comment/post) where template is located and what filter is currently active.
  • Allows you to modify the location_tag so that a different tag is applied to the template.
  1. ziggeo_manage_template_options_pre / (array) $temp_templates_array
  • Filter helper to extend the available types of templates
  1. ziggeo_parameter_prep_skip_list / (array) array()
  • Allows you to add a parameter that should be skipped from processing. Useful if you are adding your own and do not want "ziggeo-" to be added as a prefix.
  1. ziggeo_comments_js_template_vrto / (string) $code, (string) $template_recorder
  • Allows you to modify the template when the video is required and text option in comments section
  • $code is empty by default and $template_recorder is passed to the function
  1. ziggeo_get_template_player_default, (string) $t_player_config
  • Allows you to modify the codes for the default player
  1. ziggeo_get_template_player_comments / (string) $t_player_comment_config
  • Allows you to modify the codes for the default player within the comments
  1. ziggeo_get_template_recorder_default / (string) $t_recorder_config
  • Allows you to modify the recorder codes
  1. ziggeo_get_template_recorder_comments / (string) $t_recorder_comment_config
  • Allows you to modify the recorder codes within the comments
  1. ziggeo_templates_editor_easy_parameters_section / (array) $sections
  • Allows you to add the sections for parameters into the easy templates editor
  1. ziggeo_templates_editor_advanced_parameters_section / (array) $sections
  • Allows you to add the sections for parameters into the advanced templates editor
  1. ziggeo_template_parameters_list / (array) array('system' => $system_parameters)
  • Allows you to fill the sections with the parameters you have created.
  add_action('ziggeo_list_integration', function() {

    $data = array(
      //Name of the plugin / service that you are integrating to
      'integration_title'   => 'Name of third party integration',
      //Where can your plugin be retrieved from?
      'integration_origin'  => '',

      //This is about your plugin
      'title'         => 'Name of your plugin',
      //Your WordPress username
      'author'        => 'Your Name',
      //URL to your website
      'author_url'      => 'https://your.url',
       //Any sort of message to show to customers, no ads
      'message'       => 'Short message',
      //Is it turned on or off by default?
      'status'        => true,
      //slug of your plugin
      'slug'          => 'your-plugin-slug',
      //URL to image (not path). Can be of the original plugin, or the bridge
      'logo'          => 'https://your.url/logo.png'

    echo zigeo_integration_present_me($data);

See how we did it with Videowalls plugin.