About this plugin
Use the new Text Modules custom post type and display a text module by either shortcode or widget.
Have you ever wanted to use some pieces of text information more than once? For instance, contact information such as a postal address? Or some slogan, motto or claim?
This is exactly when Text Modules kicks in.
Usage
This plugin registers a simple post type for text modules. A text module can be accessed either via shortcode (by means of the text module’s ID or slug) or via a new Tex Modules widget.
Filters
In order to customize certain aspects of the plugin, it provides you with several filters. For each of these, a short description as well as a code example on how to alter the default behavior is given below. php file or your customization plugin, or to some other appropriate place.
text_modules_after_widget_content
This filter lets you alter the HTML after the widget content.
/** * Filter the HTML after the widget content. * * @param string $after_widget_content Some HTML after the widget content. */ add_filter( 'text_modules_after_widget_content', function() {
-- End of Text Modules widget content -->'; } );
text_modules_before_widget_content
This filter lets you alter the HTML before the widget content.
/** * Filter the HTML before the widget content. * * @param string $before_widget_content Some HTML before the widget content. */ add_filter( 'text_modules_before_widget_content', function() {
-- Start of Text Modules widget content -->'; } );
text_modules_post_type
Yes, you can alter the post type (slug).
/** * Filter the post type. * * @param string $post_type Post type. */ add_filter( 'text_modules_post_type', function() {
return 'exotic_stuff'; } );
text_modules_post_type_args
If you want to alter a specific post type argument but you can’t find a fitting filter, there’s text_modules_post_type_args, which provides you with the complete args array.
/** * Filter the post type args. * * @param array $args Post type args. */ add_filter( 'text_modules_post_type_args', function( $args ) {
// Use hierarchical external content $args[ 'hierarchical' ] = TRUE;
return $args; } );
text_modules_post_type_description
The post type description can be customized by using the text_modules_post_type_description filter.
/** * Filter the post type description. * * @param string $description Post type description. */ add_filter( 'text_modules_post_type_description', function() {
'; } );
text_modules_post_type_labels
In case you don’t like the labels, easily adapt them to your liking.
/** * Filter the post type labels. * * @param array $labels Post type labels. */ add_filter( 'text_modules_post_type_labels', function( $labels ) {
// A little more horror, please... ';
return $labels; } );
text_modules_post_type_supports
This filter provides you with the post type supports.
/** * Filter the post type supports. * * @param array $supports Post type supports. */ add_filter( 'text_modules_post_type_supports', function( $supports ) {
// Let's add revisions for our post type if (! in_array( 'revisions', $supports ) ) { $supports[] = 'revisions'; }
return $supports; } );
text_modules_shortcode_apply_do_shortcode
By default, do_shortcode() will be called on the shortcode output. Of course, you can change that.
/** * Filter if the shortcode should apply do_shortcode() to the output. * * @param bool $do_shortcode Should the shortcode apply do_shortcode()? */ add_filter( 'text_modules_shortcode_apply_do_shortcode', '__return_false' );
text_modules_shortcode_callback
In case you would like to adapt how the shortcode data is handled, you can provide your own shortcode callback. This can either be a string holding the function name, or an array with either a class name or an object, and the according method.
/** * Filter the shortcode callback. * * @param array|string $callback Shortcode callback. */ add_filter( 'text_modules_shortcode_callback', function() {
return 'my_text_modules_shortcode_callback'; } );
text_modules_shortcode_id_attribute_name
This filter lets you alter the shortcode’s ‘id’ attribute name.
/** * Filter the 'id' shortcode attribute name. * * @param string $name Attribute name. */ add_filter( 'text_modules_shortcode_id_attribute_name', function() {
return 'post_id'; } );
text_modules_shortcode_output
This filter lets you alter the shortcode output. The second parameter holds the shortcode attributes array.
/** * Filter the shortcode output. * * @param string $output Shortcode output. * @param array $atts Shortcode attributes array.
*/ add_filter( 'text_modules_shortcode_output', function( $output ) {
return $output. '; } );
text_modules_shortcode_query_args
Also, there’s text_modules_shortcode_query_args, which provides you with the complete args array for the shortcode’s query.
/** * Filter the shortcode query args. * * @param array $args Shortcode query args. */ add_filter( 'text_modules_shortcode_query_args', function( $args ) {
// Exclude some text modules by ID $args[ 'post__not_in' ] = array( 4, 8, 15, 16, 23, 42 );
return $args; } );
text_modules_shortcode_slug_attribute_name
This filter lets you alter the shortcode’s ‘slug’ attribute name.
/** * Filter the 'slug' shortcode attribute name. * * @param string $name Attribute name. */ add_filter( 'text_modules_shortcode_slug_attribute_name', function() {
return 'post_slug'; } );
text_modules_shortcode_tag
This filter lets you alter the shortcode’s tag.
/** * Filter the shortcode tag. * * @param string $shortcode_tag Shortcode tag. */ add_filter( 'text_modules_shortcode_tag', function() {
return 'text_block'; } );
text_modules_shortcode_use_slug
By default, text modules are being queried by their post ID first. Of course, you can change that and use the post slug instead.
/** * Filter if the shortcode (query) should use the post slug instead of the post ID. * * @param bool $use_slug Use slug instead of ID? */ add_filter( 'text_modules_shortcode_use_slug', '__return_true' );
text_modules_widget_form_query_args
Also, there’s text_modules_widget_form_query_args, which provides you with the complete args array for the widget form’s query.
/** * Filter the widget form query args. * * @param array $args Query args. */ add_filter( 'text_modules_widget_form_query_args', function( $args ) {
// Exclude some text modules by ID $args[ 'post__not_in' ] = array( 4, 8, 15, 16, 23, 42 );
return $args; } );
Contribution
To contribute to this plugin, please see its GitHub repository.
If you have a feature request, or if you have developed the feature already, please feel free to use the Issues and/or Pull Requests section.
Of course, you can also provide me with translations if you would like to use the plugin in another not yet included language.