=== Text Modules === Contributors: ipm-frommen Donate link: http://ipm-frommen.de/wordpress Tags: text, module, modules, custom post type, post, posts Requires at least: 3.0.0 Tested up to: 4.3 Stable tag: trunk License: GPLv3 License URI: http://www.gnu.org/licenses/gpl-3.0.html Use the new Text Modules custom post type and display a text module by either shortcode or widget. == Description == **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. Just put the according code snippet in your theme's `functions.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() { return ''; } ); ` **`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() { return ''; } ); ` **`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() { // Provide a description return 'Simple post type for text modules.'; } ); ` **`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... $labels[ 'not_found' ] = 'ZOMG, no text module found!!1!!1!!oneone!!!1!eleven!1!'; 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 . ' Over and out.'; } ); ` **`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. == Installation == This plugin requires PHP 5.3. 1. Upload the `text-modules` folder to the `/wp-content/plugins/` directory on your web server. 1. Activate the plugin through the _Plugins_ menu in WordPress. 1. Find the new _Text Modules_ menu in your WordPress backend. == Screenshots == 1. **List table** - Here you can see all text modules together with their individual slug and shortcode. 1. **Meta box** - Here you can see the currently edited text module's shortcode. 1. **Widget** - Use any text module in a Text Module widget. == Changelog == = 1.0.1 = * Escape translated strings. * Improve namespace imports. * Compatible up to WordPress 4.2.4. = 1.0.0 = * Initial release. * wordpress.org release. * Compatible up to WordPress 4.2.3.