diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5680e56..0be9cde 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+##### v1.4
+* fix error with taxonomy arrays when generating columns
+* run `custom_populate_columns` callbacks using `call_user_func_array()`
+* add post updated messages
+* add flush method
+
##### v1.3.3
* add check if exisiting_taxonomies is an array
diff --git a/README.md b/README.md
index 7532971..78a54bd 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# WP Custom Post Type Class v1.3.3
+# WP Custom Post Type Class v1.4
A single class to help you build more advanced custom post types quickly.
@@ -232,6 +232,15 @@ The class is setup for translation, but if you need to set your own textdomain t
$books->set_textdomain('your-textdomain');
```
+### Flush Rewrite Rules
+
+You can programmatically recreate the sites rewrite rules with the `flush()` method.
+This is an expensive operation and should be used with caution, see [codex](https://codex.wordpress.org/Function_Reference/flush_rewrite_rules) for more.
+
+```php
+$books->flush();
+```
+
## Notes
* The class has no methods for making custom fields for post types, use [Advanced Custom Fields](http://advancedcustomfields.com)
diff --git a/src/CPT.php b/src/CPT.php
index c48997b..2dc5ea9 100644
--- a/src/CPT.php
+++ b/src/CPT.php
@@ -7,923 +7,927 @@
*
* @author jjgrainger
* @link http://jjgrainger.co.uk
- * @version 1.3.3
+ * @version 1.4
* @license http://www.opensource.org/licenses/mit-license.html MIT License
*/
class CPT {
- /**
- * Post type name.
- *
- * @var string $post_type_name Holds the name of the post type.
- */
+ /**
+ * Post type name.
+ *
+ * @var string $post_type_name Holds the name of the post type.
+ */
public $post_type_name;
- /**
- * Holds the singular name of the post type. This is a human friendly
- * name, capitalized with spaces assigned on __construct().
- *
- * @var string $singular Post type singular name.
- */
+ /**
+ * Holds the singular name of the post type. This is a human friendly
+ * name, capitalized with spaces assigned on __construct().
+ *
+ * @var string $singular Post type singular name.
+ */
public $singular;
- /**
- * Holds the plural name of the post type. This is a human friendly
- * name, capitalized with spaces assigned on __construct().
- *
- * @var string $plural Singular post type name.
- */
- public $plural;
-
- /**
- * Post type slug. This is a robot friendly name, all lowercase and uses
- * hyphens assigned on __construct().
- *
- * @var string $slug Holds the post type slug name.
- */
- public $slug;
-
- /**
- * User submitted options assigned on __construct().
- *
- * @var array $options Holds the user submitted post type options.
- */
- public $options;
-
- /**
- * Taxonomies
- *
- * @var array $taxonomies Holds an array of taxonomies associated with the post type.
- */
- public $taxonomies;
-
- /**
- * Taxonomy settings, an array of the taxonomies associated with the post
- * type and their options used when registering the taxonomies.
- *
- * @var array $taxonomy_settings Holds the taxonomy settings.
- */
- public $taxonomy_settings;
-
- /**
- * Exisiting taxonomies to be registered after the posty has been registered
- *
- * @var array $exisiting_taxonomies holds exisiting taxonomies
- */
- public $exisiting_taxonomies;
-
- /**
- * Taxonomy filters. Defines which filters are to appear on admin edit
- * screen used in add_taxonmy_filters().
- *
- * @var array $filters Taxonomy filters.
- */
- public $filters;
-
- /**
- * Defines which columns are to appear on the admin edit screen used
- * in add_admin_columns().
- *
- * @var array $columns Columns visible in admin edit screen.
- */
- public $columns;
-
- /**
- * User defined functions to populate admin columns.
- *
- * @var array $custom_populate_columns User functions to populate columns.
- */
- public $custom_populate_columns;
-
- /**
- * Sortable columns.
- *
- * @var array $sortable Define which columns are sortable on the admin edit screen.
- */
- public $sortable;
-
- /**
- * Textdomain used for translation. Use the set_textdomain() method to set a custom textdomain.
- *
- * @var string $textdomain Used for internationalising. Defaults to "cpt" without quotes.
- */
- public $textdomain = 'cpt';
-
- /**
- * Constructor
- *
- * Register a custom post type.
- *
- * @param mixed $post_type_names The name(s) of the post type, accepts (post type name, slug, plural, singular).
- * @param array $options User submitted options.
- */
- function __construct( $post_type_names, $options = array() ) {
+ /**
+ * Holds the plural name of the post type. This is a human friendly
+ * name, capitalized with spaces assigned on __construct().
+ *
+ * @var string $plural Singular post type name.
+ */
+ public $plural;
+
+ /**
+ * Post type slug. This is a robot friendly name, all lowercase and uses
+ * hyphens assigned on __construct().
+ *
+ * @var string $slug Holds the post type slug name.
+ */
+ public $slug;
+
+ /**
+ * User submitted options assigned on __construct().
+ *
+ * @var array $options Holds the user submitted post type options.
+ */
+ public $options;
+
+ /**
+ * Taxonomies
+ *
+ * @var array $taxonomies Holds an array of taxonomies associated with the post type.
+ */
+ public $taxonomies;
+
+ /**
+ * Taxonomy settings, an array of the taxonomies associated with the post
+ * type and their options used when registering the taxonomies.
+ *
+ * @var array $taxonomy_settings Holds the taxonomy settings.
+ */
+ public $taxonomy_settings;
+
+ /**
+ * Exisiting taxonomies to be registered after the posty has been registered
+ *
+ * @var array $exisiting_taxonomies holds exisiting taxonomies
+ */
+ public $exisiting_taxonomies;
+
+ /**
+ * Taxonomy filters. Defines which filters are to appear on admin edit
+ * screen used in add_taxonmy_filters().
+ *
+ * @var array $filters Taxonomy filters.
+ */
+ public $filters;
+
+ /**
+ * Defines which columns are to appear on the admin edit screen used
+ * in add_admin_columns().
+ *
+ * @var array $columns Columns visible in admin edit screen.
+ */
+ public $columns;
+
+ /**
+ * User defined functions to populate admin columns.
+ *
+ * @var array $custom_populate_columns User functions to populate columns.
+ */
+ public $custom_populate_columns;
+
+ /**
+ * Sortable columns.
+ *
+ * @var array $sortable Define which columns are sortable on the admin edit screen.
+ */
+ public $sortable;
+
+ /**
+ * Textdomain used for translation. Use the set_textdomain() method to set a custom textdomain.
+ *
+ * @var string $textdomain Used for internationalising. Defaults to "cpt" without quotes.
+ */
+ public $textdomain = 'cpt';
+
+ /**
+ * Constructor
+ *
+ * Register a custom post type.
+ *
+ * @param mixed $post_type_names The name(s) of the post type, accepts (post type name, slug, plural, singular).
+ * @param array $options User submitted options.
+ */
+ function __construct( $post_type_names, $options = array() ) {
// Check if post type names is a string or an array.
if ( is_array( $post_type_names ) ) {
- // Add names to object.
- $names = array(
- 'singular',
- 'plural',
- 'slug'
- );
+ // Add names to object.
+ $names = array(
+ 'singular',
+ 'plural',
+ 'slug'
+ );
- // Set the post type name.
- $this->post_type_name = $post_type_names['post_type_name'];
+ // Set the post type name.
+ $this->post_type_name = $post_type_names['post_type_name'];
- // Cycle through possible names.
- foreach ( $names as $name ) {
+ // Cycle through possible names.
+ foreach ( $names as $name ) {
- // If the name has been set by user.
+ // If the name has been set by user.
if ( isset( $post_type_names[ $name ] ) ) {
- // Use the user setting
- $this->$name = $post_type_names[ $name ];
+ // Use the user setting
+ $this->$name = $post_type_names[ $name ];
- // Else generate the name.
+ // Else generate the name.
} else {
- // define the method to be used
- $method = 'get_' . $name;
+ // define the method to be used
+ $method = 'get_' . $name;
- // Generate the name
- $this->$name = $this->$method();
- }
- }
+ // Generate the name
+ $this->$name = $this->$method();
+ }
+ }
- // Else the post type name is only supplied.
- } else {
+ // Else the post type name is only supplied.
+ } else {
- // Apply to post type name.
- $this->post_type_name = $post_type_names;
+ // Apply to post type name.
+ $this->post_type_name = $post_type_names;
- // Set the slug name.
- $this->slug = $this->get_slug();
+ // Set the slug name.
+ $this->slug = $this->get_slug();
- // Set the plural name label.
- $this->plural = $this->get_plural();
+ // Set the plural name label.
+ $this->plural = $this->get_plural();
- // Set the singular name label.
- $this->singular = $this->get_singular();
+ // Set the singular name label.
+ $this->singular = $this->get_singular();
}
- // Set the user submitted options to the object.
- $this->options = $options;
+ // Set the user submitted options to the object.
+ $this->options = $options;
+
+ // Register taxonomies.
+ $this->add_action( 'init', array( &$this, 'register_taxonomies' ) );
- // Register taxonomies.
- $this->add_action( 'init', array( &$this, 'register_taxonomies' ) );
+ // Register the post type.
+ $this->add_action( 'init', array( &$this, 'register_post_type' ) );
- // Register the post type.
- $this->add_action( 'init', array( &$this, 'register_post_type' ) );
+ // Register exisiting taxonomies.
+ $this->add_action( 'init', array( &$this, 'register_exisiting_taxonomies' ) );
- // Register exisiting taxonomies.
- $this->add_action( 'init', array( &$this, 'register_exisiting_taxonomies' ) );
+ // Add taxonomy to admin edit columns.
+ $this->add_filter( 'manage_edit-' . $this->post_type_name . '_columns', array( &$this, 'add_admin_columns' ) );
- // Add taxonomy to admin edit columns.
- $this->add_filter( 'manage_edit-' . $this->post_type_name . '_columns', array( &$this, 'add_admin_columns' ) );
+ // Populate the taxonomy columns with the posts terms.
+ $this->add_action( 'manage_' . $this->post_type_name . '_posts_custom_column', array( &$this, 'populate_admin_columns' ), 10, 2 );
- // Populate the taxonomy columns with the posts terms.
- $this->add_action( 'manage_' . $this->post_type_name . '_posts_custom_column', array( &$this, 'populate_admin_columns' ), 10, 2 );
+ // Add filter select option to admin edit.
+ $this->add_action( 'restrict_manage_posts', array( &$this, 'add_taxonomy_filters' ) );
- // Add filter select option to admin edit.
- $this->add_action( 'restrict_manage_posts', array( &$this, 'add_taxonomy_filters' ) );
+ // rewrite post update messages
+ $this->add_filter( 'post_updated_messages', array( &$this, 'updated_messages' ) );
+ $this->add_filter( 'bulk_post_updated_messages', array( &$this, 'bulk_updated_messages' ), 10, 2 );
}
- /**
- * Get
- *
- * Helper function to get an object variable.
- *
- * @param string $var The variable you would like to retrieve.
- * @return mixed Returns the value on success, boolean false whe it fails.
- */
- function get( $var ) {
+ /**
+ * Get
+ *
+ * Helper function to get an object variable.
+ *
+ * @param string $var The variable you would like to retrieve.
+ * @return mixed Returns the value on success, boolean false whe it fails.
+ */
+ function get( $var ) {
- // If the variable exists.
- if ( $this->$var ) {
+ // If the variable exists.
+ if ( $this->$var ) {
- // On success return the value.
- return $this->$var;
+ // On success return the value.
+ return $this->$var;
- } else {
+ } else {
- // on fail return false
- return false;
+ // on fail return false
+ return false;
}
}
- /**
- * Set
- *
- * Helper function used to set an object variable. Can overwrite existsing
- * variables or create new ones. Cannot overwrite reserved variables.
- *
- * @param mixed $var The variable you would like to create/overwrite.
- * @param mixed $value The value you would like to set to the variable.
- */
- function set( $var, $value ) {
-
- // An array of reserved variables that cannot be overwritten.
- $reserved = array(
- 'config',
- 'post_type_name',
- 'singular',
- 'plural',
- 'slug',
- 'options',
- 'taxonomies'
- );
-
- // If the variable is not a reserved variable
+ /**
+ * Set
+ *
+ * Helper function used to set an object variable. Can overwrite existsing
+ * variables or create new ones. Cannot overwrite reserved variables.
+ *
+ * @param mixed $var The variable you would like to create/overwrite.
+ * @param mixed $value The value you would like to set to the variable.
+ */
+ function set( $var, $value ) {
+
+ // An array of reserved variables that cannot be overwritten.
+ $reserved = array(
+ 'config',
+ 'post_type_name',
+ 'singular',
+ 'plural',
+ 'slug',
+ 'options',
+ 'taxonomies'
+ );
+
+ // If the variable is not a reserved variable
if ( ! in_array( $var, $reserved ) ) {
- // Write variable and value
- $this->$var = $value;
- }
- }
-
- /**
- * Add Action
- *
- * Helper function to add add_action WordPress filters.
- *
- * @param string $action Name of the action.
- * @param string $function Function to hook that will run on action.
- * @param integet $priority Order in which to execute the function, relation to other functions hooked to this action.
- * @param integer $accepted_args The number of arguments the function accepts.
- */
- function add_action( $action, $function, $priority = 10, $accepted_args = 1 ) {
-
- // Pass variables into WordPress add_action function
- add_action( $action, $function, $priority, $accepted_args );
+ // Write variable and value
+ $this->$var = $value;
+ }
+ }
+
+ /**
+ * Add Action
+ *
+ * Helper function to add add_action WordPress filters.
+ *
+ * @param string $action Name of the action.
+ * @param string $function Function to hook that will run on action.
+ * @param integet $priority Order in which to execute the function, relation to other functions hooked to this action.
+ * @param integer $accepted_args The number of arguments the function accepts.
+ */
+ function add_action( $action, $function, $priority = 10, $accepted_args = 1 ) {
+
+ // Pass variables into WordPress add_action function
+ add_action( $action, $function, $priority, $accepted_args );
}
- /**
- * Add Filter
- *
- * Create add_filter WordPress filter.
- *
- * @see http://codex.wordpress.org/Function_Reference/add_filter
- *
- * @param string $action Name of the action to hook to, e.g 'init'.
- * @param string $function Function to hook that will run on @action.
- * @param int $priority Order in which to execute the function, relation to other function hooked to this action.
- * @param int $accepted_args The number of arguements the function accepts.
- */
- function add_filter( $action, $function, $priority = 10, $accepted_args = 1 ) {
-
- // Pass variables into Wordpress add_action function
- add_filter( $action, $function, $priority, $accepted_args );
+ /**
+ * Add Filter
+ *
+ * Create add_filter WordPress filter.
+ *
+ * @see http://codex.wordpress.org/Function_Reference/add_filter
+ *
+ * @param string $action Name of the action to hook to, e.g 'init'.
+ * @param string $function Function to hook that will run on @action.
+ * @param int $priority Order in which to execute the function, relation to other function hooked to this action.
+ * @param int $accepted_args The number of arguements the function accepts.
+ */
+ function add_filter( $action, $function, $priority = 10, $accepted_args = 1 ) {
+
+ // Pass variables into Wordpress add_action function
+ add_filter( $action, $function, $priority, $accepted_args );
}
- /**
- * Get slug
- *
- * Creates an url friendly slug.
- *
- * @param string $name Name to slugify.
- * @return string $name Returns the slug.
- */
- function get_slug( $name = null ) {
+ /**
+ * Get slug
+ *
+ * Creates an url friendly slug.
+ *
+ * @param string $name Name to slugify.
+ * @return string $name Returns the slug.
+ */
+ function get_slug( $name = null ) {
- // If no name set use the post type name.
- if ( ! isset( $name ) ) {
+ // If no name set use the post type name.
+ if ( ! isset( $name ) ) {
- $name = $this->post_type_name;
- }
+ $name = $this->post_type_name;
+ }
- // Name to lower case.
- $name = strtolower( $name );
+ // Name to lower case.
+ $name = strtolower( $name );
- // Replace spaces with hyphen.
- $name = str_replace( " ", "-", $name );
+ // Replace spaces with hyphen.
+ $name = str_replace( " ", "-", $name );
- // Replace underscore with hyphen.
- $name = str_replace( "_", "-", $name );
+ // Replace underscore with hyphen.
+ $name = str_replace( "_", "-", $name );
- return $name;
- }
+ return $name;
+ }
/**
- * Get plural
- *
- * Returns the friendly plural name.
- *
- * ucwords capitalize words
- * strtolower makes string lowercase before capitalizing
- * str_replace replace all instances of _ to space
- *
- * @param string $name The slug name you want to pluralize.
- * @return string the friendly pluralized name.
- */
- function get_plural( $name = null ) {
-
- // If no name is passed the post_type_name is used.
- if ( ! isset( $name ) ) {
-
- $name = $this->post_type_name;
- }
-
- // Return the plural name. Add 's' to the end.
- return $this->get_human_friendly( $name ) . 's';
+ * Get plural
+ *
+ * Returns the friendly plural name.
+ *
+ * ucwords capitalize words
+ * strtolower makes string lowercase before capitalizing
+ * str_replace replace all instances of _ to space
+ *
+ * @param string $name The slug name you want to pluralize.
+ * @return string the friendly pluralized name.
+ */
+ function get_plural( $name = null ) {
+
+ // If no name is passed the post_type_name is used.
+ if ( ! isset( $name ) ) {
+
+ $name = $this->post_type_name;
+ }
+
+ // Return the plural name. Add 's' to the end.
+ return $this->get_human_friendly( $name ) . 's';
+ }
+
+ /**
+ * Get singular
+ *
+ * Returns the friendly singular name.
+ *
+ * ucwords capitalize words
+ * strtolower makes string lowercase before capitalizing
+ * str_replace replace all instances of _ to space
+ *
+ * @param string $name The slug name you want to unpluralize.
+ * @return string The friendly singular name.
+ */
+ function get_singular( $name = null ) {
+
+ // If no name is passed the post_type_name is used.
+ if ( ! isset( $name ) ) {
+
+ $name = $this->post_type_name;
+
+ }
+
+ // Return the string.
+ return $this->get_human_friendly( $name );
}
- /**
- * Get singular
- *
- * Returns the friendly singular name.
- *
- * ucwords capitalize words
- * strtolower makes string lowercase before capitalizing
- * str_replace replace all instances of _ to space
- *
- * @param string $name The slug name you want to unpluralize.
- * @return string The friendly singular name.
- */
- function get_singular( $name = null ) {
-
- // If no name is passed the post_type_name is used.
- if ( ! isset( $name ) ) {
-
- $name = $this->post_type_name;
-
- }
-
- // Return the string.
- return $this->get_human_friendly( $name );
+ /**
+ * Get human friendly
+ *
+ * Returns the human friendly name.
+ *
+ * ucwords capitalize words
+ * strtolower makes string lowercase before capitalizing
+ * str_replace replace all instances of hyphens and underscores to spaces
+ *
+ * @param string $name The name you want to make friendly.
+ * @return string The human friendly name.
+ */
+ function get_human_friendly( $name = null ) {
+
+ // If no name is passed the post_type_name is used.
+ if ( ! isset( $name ) ) {
+
+ $name = $this->post_type_name;
+ }
+
+ // Return human friendly name.
+ return ucwords( strtolower( str_replace( "-", " ", str_replace( "_", " ", $name ) ) ) );
}
- /**
- * Get human friendly
- *
- * Returns the human friendly name.
- *
- * ucwords capitalize words
- * strtolower makes string lowercase before capitalizing
- * str_replace replace all instances of hyphens and underscores to spaces
- *
- * @param string $name The name you want to make friendly.
- * @return string The human friendly name.
- */
- function get_human_friendly( $name = null ) {
-
- // If no name is passed the post_type_name is used.
- if ( ! isset( $name ) ) {
-
- $name = $this->post_type_name;
- }
-
- // Return human friendly name.
- return ucwords( strtolower( str_replace( "-", " ", str_replace( "_", " ", $name ) ) ) );
- }
-
- /**
- * Register Post Type
- *
- * @see http://codex.wordpress.org/Function_Reference/register_post_type
- */
- function register_post_type() {
-
- // Friendly post type names.
- $plural = $this->plural;
- $singular = $this->singular;
- $slug = $this->slug;
-
- // Default labels.
- $labels = array(
- 'name' => sprintf( __( '%s', $this->textdomain ), $plural ),
- 'singular_name' => sprintf( __( '%s', $this->textdomain ), $singular ),
- 'menu_name' => sprintf( __( '%s', $this->textdomain ), $plural ),
- 'all_items' => sprintf( __( '%s', $this->textdomain ), $plural ),
- 'add_new' => __( 'Add New', $this->textdomain ),
- 'add_new_item' => sprintf( __( 'Add New %s', $this->textdomain ), $singular ),
- 'edit_item' => sprintf( __( 'Edit %s', $this->textdomain ), $singular ),
- 'new_item' => sprintf( __( 'New %s', $this->textdomain ), $singular ),
- 'view_item' => sprintf( __( 'View %s', $this->textdomain ), $singular ),
- 'search_items' => sprintf( __( 'Search %s', $this->textdomain ), $plural ),
- 'not_found' => sprintf( __( 'No %s found', $this->textdomain ), $plural ),
- 'not_found_in_trash' => sprintf( __( 'No %s found in Trash', $this->textdomain ), $plural ),
- 'parent_item_colon' => sprintf( __( 'Parent %s:', $this->textdomain ), $singular )
- );
-
- // Default options.
- $defaults = array(
- 'labels' => $labels,
- 'public' => true,
- 'rewrite' => array(
- 'slug' => $slug,
- )
- );
-
- // Merge user submitted options with defaults.
- $options = array_replace_recursive( $defaults, $this->options );
-
- // Set the object options as full options passed.
- $this->options = $options;
-
- // Check that the post type doesn't already exist.
+ /**
+ * Register Post Type
+ *
+ * @see http://codex.wordpress.org/Function_Reference/register_post_type
+ */
+ function register_post_type() {
+
+ // Friendly post type names.
+ $plural = $this->plural;
+ $singular = $this->singular;
+ $slug = $this->slug;
+
+ // Default labels.
+ $labels = array(
+ 'name' => sprintf( __( '%s', $this->textdomain ), $plural ),
+ 'singular_name' => sprintf( __( '%s', $this->textdomain ), $singular ),
+ 'menu_name' => sprintf( __( '%s', $this->textdomain ), $plural ),
+ 'all_items' => sprintf( __( '%s', $this->textdomain ), $plural ),
+ 'add_new' => __( 'Add New', $this->textdomain ),
+ 'add_new_item' => sprintf( __( 'Add New %s', $this->textdomain ), $singular ),
+ 'edit_item' => sprintf( __( 'Edit %s', $this->textdomain ), $singular ),
+ 'new_item' => sprintf( __( 'New %s', $this->textdomain ), $singular ),
+ 'view_item' => sprintf( __( 'View %s', $this->textdomain ), $singular ),
+ 'search_items' => sprintf( __( 'Search %s', $this->textdomain ), $plural ),
+ 'not_found' => sprintf( __( 'No %s found', $this->textdomain ), $plural ),
+ 'not_found_in_trash' => sprintf( __( 'No %s found in Trash', $this->textdomain ), $plural ),
+ 'parent_item_colon' => sprintf( __( 'Parent %s:', $this->textdomain ), $singular )
+ );
+
+ // Default options.
+ $defaults = array(
+ 'labels' => $labels,
+ 'public' => true,
+ 'rewrite' => array(
+ 'slug' => $slug,
+ )
+ );
+
+ // Merge user submitted options with defaults.
+ $options = array_replace_recursive( $defaults, $this->options );
+
+ // Set the object options as full options passed.
+ $this->options = $options;
+
+ // Check that the post type doesn't already exist.
if ( ! post_type_exists( $this->post_type_name ) ) {
- // Register the post type.
- register_post_type( $this->post_type_name, $options );
- }
- }
-
- /**
- * Register taxonomy
- *
- * @see http://codex.wordpress.org/Function_Reference/register_taxonomy
- *
- * @param string $taxonomy_name The slug for the taxonomy.
- * @param array $options Taxonomy options.
+ // Register the post type.
+ register_post_type( $this->post_type_name, $options );
+ }
+ }
+
+ /**
+ * Register taxonomy
+ *
+ * @see http://codex.wordpress.org/Function_Reference/register_taxonomy
+ *
+ * @param string $taxonomy_name The slug for the taxonomy.
+ * @param array $options Taxonomy options.
*/
- function register_taxonomy($taxonomy_names, $options = array()) {
+ function register_taxonomy($taxonomy_names, $options = array()) {
- // Post type defaults to $this post type if unspecified.
- $post_type = $this->post_type_name;
+ // Post type defaults to $this post type if unspecified.
+ $post_type = $this->post_type_name;
- // An array of the names required excluding taxonomy_name.
- $names = array(
- 'singular',
- 'plural',
- 'slug'
- );
+ // An array of the names required excluding taxonomy_name.
+ $names = array(
+ 'singular',
+ 'plural',
+ 'slug'
+ );
- // if an array of names are passed
- if ( is_array( $taxonomy_names ) ) {
+ // if an array of names are passed
+ if ( is_array( $taxonomy_names ) ) {
- // Set the taxonomy name
- $taxonomy_name = $taxonomy_names['taxonomy_name'];
+ // Set the taxonomy name
+ $taxonomy_name = $taxonomy_names['taxonomy_name'];
- // Cycle through possible names.
- foreach ( $names as $name ) {
+ // Cycle through possible names.
+ foreach ( $names as $name ) {
- // If the user has set the name.
- if ( isset( $taxonomy_names[ $name ] ) ) {
+ // If the user has set the name.
+ if ( isset( $taxonomy_names[ $name ] ) ) {
- // Use user submitted name.
- $$name = $taxonomy_names[ $name ];
+ // Use user submitted name.
+ $$name = $taxonomy_names[ $name ];
- // Else generate the name.
- } else {
+ // Else generate the name.
+ } else {
- // Define the function to be used.
- $method = 'get_' . $name;
+ // Define the function to be used.
+ $method = 'get_' . $name;
- // Generate the name
- $$name = $this->$method( $taxonomy_name );
+ // Generate the name
+ $$name = $this->$method( $taxonomy_name );
- }
- }
+ }
+ }
- // Else if only the taxonomy_name has been supplied.
- } else {
+ // Else if only the taxonomy_name has been supplied.
+ } else {
- // Create user friendly names.
- $taxonomy_name = $taxonomy_names;
- $singular = $this->get_singular( $taxonomy_name );
- $plural = $this->get_plural( $taxonomy_name );
- $slug = $this->get_slug( $taxonomy_name );
+ // Create user friendly names.
+ $taxonomy_name = $taxonomy_names;
+ $singular = $this->get_singular( $taxonomy_name );
+ $plural = $this->get_plural( $taxonomy_name );
+ $slug = $this->get_slug( $taxonomy_name );
- }
+ }
- // Default labels.
- $labels = array(
- 'name' => sprintf( __( '%s', $this->textdomain ), $plural ),
- 'singular_name' => sprintf( __( '%s', $this->textdomain ), $singular ),
- 'menu_name' => sprintf( __( '%s', $this->textdomain ), $plural ),
- 'all_items' => sprintf( __( 'All %s', $this->textdomain ), $plural ),
- 'edit_item' => sprintf( __( 'Edit %s', $this->textdomain ), $singular ),
- 'view_item' => sprintf( __( 'View %s', $this->textdomain ), $singular ),
- 'update_item' => sprintf( __( 'Update %s', $this->textdomain ), $singular ),
- 'add_new_item' => sprintf( __( 'Add New %s', $this->textdomain ), $singular ),
- 'new_item_name' => sprintf( __( 'New %s Name', $this->textdomain ), $singular ),
- 'parent_item' => sprintf( __( 'Parent %s', $this->textdomain ), $plural ),
- 'parent_item_colon' => sprintf( __( 'Parent %s:', $this->textdomain ), $plural ),
- 'search_items' => sprintf( __( 'Search %s', $this->textdomain ), $plural ),
- 'popular_items' => sprintf( __( 'Popular %s', $this->textdomain ), $plural ),
- 'separate_items_with_commas' => sprintf( __( 'Seperate %s with commas', $this->textdomain ), $plural ),
- 'add_or_remove_items' => sprintf( __( 'Add or remove %s', $this->textdomain ), $plural ),
- 'choose_from_most_used' => sprintf( __( 'Choose from most used %s', $this->textdomain ), $plural ),
- 'not_found' => sprintf( __( 'No %s found', $this->textdomain ), $plural ),
- );
+ // Default labels.
+ $labels = array(
+ 'name' => sprintf( __( '%s', $this->textdomain ), $plural ),
+ 'singular_name' => sprintf( __( '%s', $this->textdomain ), $singular ),
+ 'menu_name' => sprintf( __( '%s', $this->textdomain ), $plural ),
+ 'all_items' => sprintf( __( 'All %s', $this->textdomain ), $plural ),
+ 'edit_item' => sprintf( __( 'Edit %s', $this->textdomain ), $singular ),
+ 'view_item' => sprintf( __( 'View %s', $this->textdomain ), $singular ),
+ 'update_item' => sprintf( __( 'Update %s', $this->textdomain ), $singular ),
+ 'add_new_item' => sprintf( __( 'Add New %s', $this->textdomain ), $singular ),
+ 'new_item_name' => sprintf( __( 'New %s Name', $this->textdomain ), $singular ),
+ 'parent_item' => sprintf( __( 'Parent %s', $this->textdomain ), $plural ),
+ 'parent_item_colon' => sprintf( __( 'Parent %s:', $this->textdomain ), $plural ),
+ 'search_items' => sprintf( __( 'Search %s', $this->textdomain ), $plural ),
+ 'popular_items' => sprintf( __( 'Popular %s', $this->textdomain ), $plural ),
+ 'separate_items_with_commas' => sprintf( __( 'Seperate %s with commas', $this->textdomain ), $plural ),
+ 'add_or_remove_items' => sprintf( __( 'Add or remove %s', $this->textdomain ), $plural ),
+ 'choose_from_most_used' => sprintf( __( 'Choose from most used %s', $this->textdomain ), $plural ),
+ 'not_found' => sprintf( __( 'No %s found', $this->textdomain ), $plural ),
+ );
+
+ // Default options.
+ $defaults = array(
+ 'labels' => $labels,
+ 'hierarchical' => true,
+ 'rewrite' => array(
+ 'slug' => $slug
+ )
+ );
+
+ // Merge default options with user submitted options.
+ $options = array_replace_recursive( $defaults, $options );
+
+ // Add the taxonomy to the object array, this is used to add columns and filters to admin panel.
+ $this->taxonomies[] = $taxonomy_name;
+
+ // Create array used when registering taxonomies.
+ $this->taxonomy_settings[ $taxonomy_name ] = $options;
- // Default options.
- $defaults = array(
- 'labels' => $labels,
- 'hierarchical' => true,
- 'rewrite' => array(
- 'slug' => $slug
- )
- );
+ }
- // Merge default options with user submitted options.
- $options = array_replace_recursive( $defaults, $options );
- // Add the taxonomy to the object array, this is used to add columns and filters to admin panel.
- $this->taxonomies[] = $taxonomy_name;
- // Create array used when registering taxonomies.
- $this->taxonomy_settings[ $taxonomy_name ] = $options;
+ /**
+ * Register taxonomies
+ *
+ * Cycles through taxonomies added with the class and registers them.
+ */
+ function register_taxonomies() {
- }
+ if ( is_array( $this->taxonomy_settings ) ) {
+ // Foreach taxonomy registered with the post type.
+ foreach ( $this->taxonomy_settings as $taxonomy_name => $options ) {
+ // Register the taxonomy if it doesn't exist.
+ if ( ! taxonomy_exists( $taxonomy_name ) ) {
+
+ // Register the taxonomy with Wordpress
+ register_taxonomy( $taxonomy_name, $this->post_type_name, $options );
+
+ } else {
+
+ // If taxonomy exists, register it later with register_exisiting_taxonomies
+ $this->exisiting_taxonomies[] = $taxonomy_name;
+ }
+ }
+ }
+ }
/**
- * Register taxonomies
- *
- * Cycles through taxonomies added with the class and registers them.
- */
- function register_taxonomies() {
-
- if ( is_array( $this->taxonomy_settings ) ) {
-
- // Foreach taxonomy registered with the post type.
- foreach ( $this->taxonomy_settings as $taxonomy_name => $options ) {
-
- // Register the taxonomy if it doesn't exist.
- if ( ! taxonomy_exists( $taxonomy_name ) ) {
-
- // Register the taxonomy with Wordpress
- register_taxonomy( $taxonomy_name, $this->post_type_name, $options );
-
- } else {
-
- // If taxonomy exists, register it later with register_exisiting_taxonomies
- $this->exisiting_taxonomies[] = $taxonomy_name;
- }
- }
- }
- }
-
- /**
- * Register Exisiting Taxonomies
- *
- * Cycles through exisiting taxonomies and registers them after the post type has been registered
- */
- function register_exisiting_taxonomies() {
-
- if( is_array( $this->exisiting_taxonomies ) ) {
- foreach( $this->exisiting_taxonomies as $taxonomy_name ) {
- register_taxonomy_for_object_type( $taxonomy_name, $this->post_type_name );
- }
- }
- }
-
- /**
- * Add admin columns
- *
- * Adds columns to the admin edit screen. Function is used with add_action
- *
- * @param array $columns Columns to be added to the admin edit screen.
- * @return array
- */
- function add_admin_columns( $columns ) {
-
- // If no user columns have been specified, add taxonomies
- if ( ! isset( $this->columns ) ) {
-
- $new_columns = array();
+ * Register Exisiting Taxonomies
+ *
+ * Cycles through exisiting taxonomies and registers them after the post type has been registered
+ */
+ function register_exisiting_taxonomies() {
- // determine which column to add custom taxonomies after
- if ( in_array( 'post_tag', $this->taxonomies ) || $this->post_type_name === 'post' ) {
- $after = 'tags';
- } elseif( in_array( 'category', $this->taxonomies ) || $this->post_type_name === 'post' ) {
- $after = 'categories';
- } elseif( post_type_supports( $this->post_type_name, 'author' ) ) {
- $after = 'author';
- } else {
- $after = 'title';
- }
+ if( is_array( $this->exisiting_taxonomies ) ) {
+ foreach( $this->exisiting_taxonomies as $taxonomy_name ) {
+ register_taxonomy_for_object_type( $taxonomy_name, $this->post_type_name );
+ }
+ }
+ }
- // foreach exisiting columns
- foreach( $columns as $key => $title ) {
+ /**
+ * Add admin columns
+ *
+ * Adds columns to the admin edit screen. Function is used with add_action
+ *
+ * @param array $columns Columns to be added to the admin edit screen.
+ * @return array
+ */
+ function add_admin_columns( $columns ) {
+
+ // If no user columns have been specified, add taxonomies
+ if ( ! isset( $this->columns ) ) {
+
+ $new_columns = array();
+
+ // determine which column to add custom taxonomies after
+ if ( is_array( $this->taxonomies ) && in_array( 'post_tag', $this->taxonomies ) || $this->post_type_name === 'post' ) {
+ $after = 'tags';
+ } elseif( is_array( $this->taxonomies ) && in_array( 'category', $this->taxonomies ) || $this->post_type_name === 'post' ) {
+ $after = 'categories';
+ } elseif( post_type_supports( $this->post_type_name, 'author' ) ) {
+ $after = 'author';
+ } else {
+ $after = 'title';
+ }
- // add exisiting column to the new column array
- $new_columns[$key] = $title;
+ // foreach exisiting columns
+ foreach( $columns as $key => $title ) {
- // we want to add taxonomy columns after a specific column
- if( $key === $after ) {
+ // add exisiting column to the new column array
+ $new_columns[$key] = $title;
- // If there are taxonomies registered to the post type.
- if ( is_array( $this->taxonomies ) ) {
+ // we want to add taxonomy columns after a specific column
+ if( $key === $after ) {
- // Create a column for each taxonomy.
- foreach( $this->taxonomies as $tax ) {
+ // If there are taxonomies registered to the post type.
+ if ( is_array( $this->taxonomies ) ) {
- // WordPress adds Categories and Tags automatically, ignore these
- if( $tax !== 'category' && $tax !== 'post_tag' ) {
- // Get the taxonomy object for labels.
- $taxonomy_object = get_taxonomy( $tax );
+ // Create a column for each taxonomy.
+ foreach( $this->taxonomies as $tax ) {
- // Column key is the slug, value is friendly name.
- $new_columns[ $tax ] = sprintf( __( '%s', $this->textdomain ), $taxonomy_object->labels->name );
- }
- }
- }
- }
- }
+ // WordPress adds Categories and Tags automatically, ignore these
+ if( $tax !== 'category' && $tax !== 'post_tag' ) {
+ // Get the taxonomy object for labels.
+ $taxonomy_object = get_taxonomy( $tax );
- // overide with new columns
- $columns = $new_columns;
+ // Column key is the slug, value is friendly name.
+ $new_columns[ $tax ] = sprintf( __( '%s', $this->textdomain ), $taxonomy_object->labels->name );
+ }
+ }
+ }
+ }
+ }
- } else {
+ // overide with new columns
+ $columns = $new_columns;
- // Use user submitted columns, these are defined using the object columns() method.
- $columns = $this->columns;
- }
+ } else {
- return $columns;
- }
+ // Use user submitted columns, these are defined using the object columns() method.
+ $columns = $this->columns;
+ }
- /**
- * Populate admin columns
- *
- * Populate custom columns on the admin edit screen.
- *
- * @param string $column The name of the column.
- * @param integer $post_id The post ID.
- */
- function populate_admin_columns( $column, $post_id ) {
+ return $columns;
+ }
- // Get wordpress $post object.
- global $post;
+ /**
+ * Populate admin columns
+ *
+ * Populate custom columns on the admin edit screen.
+ *
+ * @param string $column The name of the column.
+ * @param integer $post_id The post ID.
+ */
+ function populate_admin_columns( $column, $post_id ) {
- // determine the column
- switch( $column ) {
+ // Get wordpress $post object.
+ global $post;
- // If column is a taxonomy associated with the post type.
- case ( taxonomy_exists( $column ) ) :
+ // determine the column
+ switch( $column ) {
- // Get the taxonomy for the post
- $terms = get_the_terms( $post_id, $column );
+ // If column is a taxonomy associated with the post type.
+ case ( taxonomy_exists( $column ) ) :
- // If we have terms.
- if ( ! empty( $terms ) ) {
+ // Get the taxonomy for the post
+ $terms = get_the_terms( $post_id, $column );
- $output = array();
+ // If we have terms.
+ if ( ! empty( $terms ) ) {
- // Loop through each term, linking to the 'edit posts' page for the specific term.
- foreach( $terms as $term ) {
+ $output = array();
- // Output is an array of terms associated with the post.
- $output[] = sprintf(
+ // Loop through each term, linking to the 'edit posts' page for the specific term.
+ foreach( $terms as $term ) {
- // Define link.
- '%s',
+ // Output is an array of terms associated with the post.
+ $output[] = sprintf(
- // Create filter url.
- esc_url( add_query_arg( array( 'post_type' => $post->post_type, $column => $term->slug ), 'edit.php' ) ),
+ // Define link.
+ '%s',
- // Create friendly term name.
- esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, $column, 'display' ) )
- );
+ // Create filter url.
+ esc_url( add_query_arg( array( 'post_type' => $post->post_type, $column => $term->slug ), 'edit.php' ) ),
- }
+ // Create friendly term name.
+ esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, $column, 'display' ) )
+ );
- // Join the terms, separating them with a comma.
- echo join( ', ', $output );
+ }
- // If no terms found.
- } else {
+ // Join the terms, separating them with a comma.
+ echo join( ', ', $output );
- // Get the taxonomy object for labels
- $taxonomy_object = get_taxonomy( $column );
+ // If no terms found.
+ } else {
- // Echo no terms.
- printf( __( 'No %s', $this->textdomain ), $taxonomy_object->labels->name );
- }
+ // Get the taxonomy object for labels
+ $taxonomy_object = get_taxonomy( $column );
- break;
+ // Echo no terms.
+ printf( __( 'No %s', $this->textdomain ), $taxonomy_object->labels->name );
+ }
- // If column is for the post ID.
- case 'post_id' :
+ break;
- echo $post->ID;
+ // If column is for the post ID.
+ case 'post_id' :
- break;
+ echo $post->ID;
- // if the column is prepended with 'meta_', this will automagically retrieve the meta values and display them.
- case ( preg_match( '/^meta_/', $column ) ? true : false ) :
+ break;
- // meta_book_author (meta key = book_author)
- $x = substr( $column, 5 );
+ // if the column is prepended with 'meta_', this will automagically retrieve the meta values and display them.
+ case ( preg_match( '/^meta_/', $column ) ? true : false ) :
- $meta = get_post_meta( $post->ID, $x );
+ // meta_book_author (meta key = book_author)
+ $x = substr( $column, 5 );
- echo join( ", ", $meta );
+ $meta = get_post_meta( $post->ID, $x );
- break;
+ echo join( ", ", $meta );
- // If the column is post thumbnail.
- case 'icon' :
+ break;
- // Create the edit link.
- $link = esc_url( add_query_arg( array( 'post' => $post->ID, 'action' => 'edit' ), 'post.php' ) );
+ // If the column is post thumbnail.
+ case 'icon' :
- // If it post has a featured image.
- if ( has_post_thumbnail() ) {
+ // Create the edit link.
+ $link = esc_url( add_query_arg( array( 'post' => $post->ID, 'action' => 'edit' ), 'post.php' ) );
- // Display post featured image with edit link.
- echo '';
- the_post_thumbnail( array(60, 60) );
+ // If it post has a featured image.
+ if ( has_post_thumbnail() ) {
+
+ // Display post featured image with edit link.
+ echo '';
+ the_post_thumbnail( array(60, 60) );
echo '';
- } else {
+ } else {
- // Display default media image with link.
- echo '';
+ // Display default media image with link.
+ echo '';
- }
+ }
- break;
+ break;
- // Default case checks if the column has a user function, this is most commonly used for custom fields.
- default :
+ // Default case checks if the column has a user function, this is most commonly used for custom fields.
+ default :
- // If there are user custom columns to populate.
- if ( isset( $this->custom_populate_columns ) && is_array( $this->custom_populate_columns ) ) {
+ // If there are user custom columns to populate.
+ if ( isset( $this->custom_populate_columns ) && is_array( $this->custom_populate_columns ) ) {
- // If this column has a user submitted function to run.
- if ( isset( $this->custom_populate_columns[ $column ] ) && is_callable( $this->custom_populate_columns[ $column ] ) ) {
+ // If this column has a user submitted function to run.
+ if ( isset( $this->custom_populate_columns[ $column ] ) && is_callable( $this->custom_populate_columns[ $column ] ) ) {
- // Run the function.
- $this->custom_populate_columns[ $column ]( $column, $post );
+ // Run the function.
+ call_user_func_array( $this->custom_populate_columns[ $column ], array( $column, $post ) );
- }
- }
+ }
+ }
- break;
- } // end switch( $column )
- }
+ break;
+ } // end switch( $column )
+ }
- /**
- * Filters
- *
- * User function to define which taxonomy filters to display on the admin page.
- *
- * @param array $filters An array of taxonomy filters to display.
- */
- function filters( $filters = array() ) {
+ /**
+ * Filters
+ *
+ * User function to define which taxonomy filters to display on the admin page.
+ *
+ * @param array $filters An array of taxonomy filters to display.
+ */
+ function filters( $filters = array() ) {
- $this->filters = $filters;
+ $this->filters = $filters;
}
- /**
- * Add taxtonomy filters
- *
- * Creates select fields for filtering posts by taxonomies on admin edit screen.
- */
- function add_taxonomy_filters() {
+ /**
+ * Add taxtonomy filters
+ *
+ * Creates select fields for filtering posts by taxonomies on admin edit screen.
+ */
+ function add_taxonomy_filters() {
- global $typenow;
- global $wp_query;
+ global $typenow;
+ global $wp_query;
- // Must set this to the post type you want the filter(s) displayed on.
- if ( $typenow == $this->post_type_name ) {
+ // Must set this to the post type you want the filter(s) displayed on.
+ if ( $typenow == $this->post_type_name ) {
- // if custom filters are defined use those
+ // if custom filters are defined use those
if ( is_array( $this->filters ) ) {
- $filters = $this->filters;
+ $filters = $this->filters;
- // else default to use all taxonomies associated with the post
- } else {
+ // else default to use all taxonomies associated with the post
+ } else {
- $filters = $this->taxonomies;
- }
+ $filters = $this->taxonomies;
+ }
- if ( ! empty( $filters ) ) {
+ if ( ! empty( $filters ) ) {
- // Foreach of the taxonomies we want to create filters for...
- foreach ( $filters as $tax_slug ) {
+ // Foreach of the taxonomies we want to create filters for...
+ foreach ( $filters as $tax_slug ) {
- // ...object for taxonomy, doesn't contain the terms.
- $tax = get_taxonomy( $tax_slug );
+ // ...object for taxonomy, doesn't contain the terms.
+ $tax = get_taxonomy( $tax_slug );
- // Get taxonomy terms and order by name.
- $args = array(
- 'orderby' => 'name',
- 'hide_empty' => false
- );
+ // Get taxonomy terms and order by name.
+ $args = array(
+ 'orderby' => 'name',
+ 'hide_empty' => false
+ );
- // Get taxonomy terms.
- $terms = get_terms( $tax_slug, $args );
+ // Get taxonomy terms.
+ $terms = get_terms( $tax_slug, $args );
- // If we have terms.
+ // If we have terms.
if ( $terms ) {
- // Set up select box.
- printf( ' ' );
- }
- }
- }
- }
- }
-
- /**
- * Columns
- *
- * Choose columns to be displayed on the admin edit screen.
- *
- * @param array $columns An array of columns to be displayed.
- */
+ // Set up select box.
+ printf( ' ' );
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Columns
+ *
+ * Choose columns to be displayed on the admin edit screen.
+ *
+ * @param array $columns An array of columns to be displayed.
+ */
function columns( $columns ) {
- // If columns is set.
+ // If columns is set.
if( isset( $columns ) ) {
- // Assign user submitted columns to object.
- $this->columns = $columns;
+ // Assign user submitted columns to object.
+ $this->columns = $columns;
}
- }
-
- /**
- * Populate columns
- *
- * Define what and how to populate a speicific admin column.
- *
- * @param string $column_name The name of the column to populate.
- * @param function $function An anonyous function to run when populating the column.
- */
- function populate_column( $column_name, $function ) {
-
- $this->custom_populate_columns[ $column_name ] = $function;
-
- }
-
- /**
- * Sortable
- *
- * Define what columns are sortable in the admin edit screen.
- *
- * @param array $columns An array of columns that are sortable.
- */
- function sortable( $columns = array() ) {
-
- // Assign user defined sortable columns to object variable.
- $this->sortable = $columns;
-
- // Run filter to make columns sortable.
- $this->add_filter( 'manage_edit-' . $this->post_type_name . '_sortable_columns', array( &$this, 'make_columns_sortable' ) );
-
- // Run action that sorts columns on request.
- $this->add_action( 'load-edit.php', array( &$this, 'load_edit' ) );
- }
-
- /**
- * Make columns sortable
- *
- * Internal function that adds user defined sortable columns to WordPress default columns.
- *
- * @param array $columns Columns to be sortable.
- *
- */
+ }
+
+ /**
+ * Populate columns
+ *
+ * Define what and how to populate a speicific admin column.
+ *
+ * @param string $column_name The name of the column to populate.
+ * @param mixed $callback An anonyous function or callable array to call when populating the column.
+ */
+ function populate_column( $column_name, $callback ) {
+
+ $this->custom_populate_columns[ $column_name ] = $callback;
+
+ }
+
+ /**
+ * Sortable
+ *
+ * Define what columns are sortable in the admin edit screen.
+ *
+ * @param array $columns An array of columns that are sortable.
+ */
+ function sortable( $columns = array() ) {
+
+ // Assign user defined sortable columns to object variable.
+ $this->sortable = $columns;
+
+ // Run filter to make columns sortable.
+ $this->add_filter( 'manage_edit-' . $this->post_type_name . '_sortable_columns', array( &$this, 'make_columns_sortable' ) );
+
+ // Run action that sorts columns on request.
+ $this->add_action( 'load-edit.php', array( &$this, 'load_edit' ) );
+ }
+
+ /**
+ * Make columns sortable
+ *
+ * Internal function that adds user defined sortable columns to WordPress default columns.
+ *
+ * @param array $columns Columns to be sortable.
+ *
+ */
function make_columns_sortable( $columns ) {
- // For each sortable column.
- foreach ( $this->sortable as $column => $values ) {
+ // For each sortable column.
+ foreach ( $this->sortable as $column => $values ) {
- // Make an array to merge into wordpress sortable columns.
- $sortable_columns[ $column ] = $values[0];
- }
+ // Make an array to merge into wordpress sortable columns.
+ $sortable_columns[ $column ] = $values[0];
+ }
- // Merge sortable columns array into wordpress sortable columns.
- $columns = array_merge( $sortable_columns, $columns );
+ // Merge sortable columns array into wordpress sortable columns.
+ $columns = array_merge( $sortable_columns, $columns );
- return $columns;
- }
+ return $columns;
+ }
- /**
- * Load edit
- *
- * Sort columns only on the edit.php page when requested.
- *
- * @see http://codex.wordpress.org/Plugin_API/Filter_Reference/request
- */
+ /**
+ * Load edit
+ *
+ * Sort columns only on the edit.php page when requested.
+ *
+ * @see http://codex.wordpress.org/Plugin_API/Filter_Reference/request
+ */
function load_edit() {
// Run filter to sort columns when requested
@@ -931,95 +935,160 @@ function load_edit() {
}
- /**
- * Sort columns
- *
- * Internal function that sorts columns on request.
- *
- * @see load_edit()
- *
- * @param array $vars The query vars submitted by user.
- * @return array A sorted array.
- */
- function sort_columns( $vars ) {
+ /**
+ * Sort columns
+ *
+ * Internal function that sorts columns on request.
+ *
+ * @see load_edit()
+ *
+ * @param array $vars The query vars submitted by user.
+ * @return array A sorted array.
+ */
+ function sort_columns( $vars ) {
// Cycle through all sortable columns submitted by the user
foreach ( $this->sortable as $column => $values ) {
- // Retrieve the meta key from the user submitted array of sortable columns
+ // Retrieve the meta key from the user submitted array of sortable columns
$meta_key = $values[0];
- // If the meta_key is a taxonomy
+ // If the meta_key is a taxonomy
if( taxonomy_exists( $meta_key ) ) {
- // Sort by taxonomy.
- $key = "taxonomy";
+ // Sort by taxonomy.
+ $key = "taxonomy";
- } else {
+ } else {
- // else by meta key.
- $key = "meta_key";
+ // else by meta key.
+ $key = "meta_key";
}
// If the optional parameter is set and is set to true
if ( isset( $values[1] ) && true === $values[1] ) {
- // Vaules needed to be ordered by integer value
- $orderby = 'meta_value_num';
-
- } else {
-
- // Values are to be order by string value
- $orderby = 'meta_value';
- }
-
- // Check if we're viewing this post type
- if ( isset( $vars['post_type'] ) && $this->post_type_name == $vars['post_type'] ) {
-
- // find the meta key we want to order posts by
- if ( isset( $vars['orderby'] ) && $meta_key == $vars['orderby'] ) {
-
- // Merge the query vars with our custom variables
- $vars = array_merge(
- $vars,
- array(
- 'meta_key' => $meta_key,
- 'orderby' => $orderby
- )
- );
- }
- }
- }
- return $vars;
- }
-
- /**
- * Set menu icon
- *
- * Use this function to set the menu icon in the admin dashboard. Since WordPress v3.8
- * dashicons are used. For more information see @link http://melchoyce.github.io/dashicons/
- *
- * @param string $icon dashicon name
- */
+ // Vaules needed to be ordered by integer value
+ $orderby = 'meta_value_num';
+
+ } else {
+
+ // Values are to be order by string value
+ $orderby = 'meta_value';
+ }
+
+ // Check if we're viewing this post type
+ if ( isset( $vars['post_type'] ) && $this->post_type_name == $vars['post_type'] ) {
+
+ // find the meta key we want to order posts by
+ if ( isset( $vars['orderby'] ) && $meta_key == $vars['orderby'] ) {
+
+ // Merge the query vars with our custom variables
+ $vars = array_merge(
+ $vars,
+ array(
+ 'meta_key' => $meta_key,
+ 'orderby' => $orderby
+ )
+ );
+ }
+ }
+ }
+ return $vars;
+ }
+
+ /**
+ * Set menu icon
+ *
+ * Use this function to set the menu icon in the admin dashboard. Since WordPress v3.8
+ * dashicons are used. For more information see @link http://melchoyce.github.io/dashicons/
+ *
+ * @param string $icon dashicon name
+ */
function menu_icon( $icon = "dashicons-admin-page" ) {
- if ( is_string( $icon ) && stripos( $icon, "dashicons" ) !== false ) {
+ if ( is_string( $icon ) && stripos( $icon, "dashicons" ) !== false ) {
+
+ $this->options["menu_icon"] = $icon;
+
+ } else {
+
+ // Set a default menu icon
+ $this->options["menu_icon"] = "dashicons-admin-page";
+ }
+ }
+
+ /**
+ * Set textdomain
+ *
+ * @param string $textdomain Textdomain used for translation.
+ */
+ function set_textdomain( $textdomain ) {
+ $this->textdomain = $textdomain;
+ }
+
+ /**
+ * Updated messages
+ *
+ * Internal function that modifies the post type names in updated messages
+ *
+ * @param array $messages an array of post updated messages
+ */
+ function updated_messages( $messages ) {
+
+ $post = get_post();
+ $singular = $this->singular;
+
+ $messages[$this->post_type_name] = array(
+ 0 => '',
+ 1 => sprintf( __( '%s updated.', $this->textdomain ), $singular ),
+ 2 => __( 'Custom field updated.', $this->textdomain ),
+ 3 => __( 'Custom field deleted.', $this->textdomain ),
+ 4 => sprintf( __( '%s updated.', $this->textdomain ), $singular ),
+ 5 => isset( $_GET['revision'] ) ? sprintf( __( '%2$s restored to revision from %1$s', $this->textdomain ), wp_post_revision_title( (int) $_GET['revision'], false ), $singular ) : false,
+ 6 => sprintf( __( '%s updated.', $this->textdomain ), $singular ),
+ 7 => sprintf( __( '%s saved.', $this->textdomain ), $singular ),
+ 8 => sprintf( __( '%s submitted.', $this->textdomain ), $singular ),
+ 9 => sprintf(
+ __( '%2$s scheduled for: %1$s.', $this->textdomain ),
+ date_i18n( __( 'M j, Y @ G:i', $this->textdomain ), strtotime( $post->post_date ) ),
+ $singular
+ ),
+ 10 => sprintf( __( '%s draft updated.', $this->textdomain ), $singular ),
+ );
+
+ return $messages;
+ }
- $this->options["menu_icon"] = $icon;
+ /**
+ * Bulk updated messages
+ *
+ * Internal function that modifies the post type names in bulk updated messages
+ *
+ * @param array $messages an array of bulk updated messages
+ */
+ function bulk_updated_messages( $bulk_messages, $bulk_counts ) {
- } else {
+ $singular = $this->singular;
+ $plural = $this->plural;
- // Set a default menu icon
- $this->options["menu_icon"] = "dashicons-admin-page";
- }
- }
+ $bulk_messages[ $this->post_type_name ] = array(
+ 'updated' => _n( '%s '.$singular.' updated.', '%s '.$plural.' updated.', $bulk_counts['updated'] ),
+ 'locked' => _n( '%s '.$singular.' not updated, somebody is editing it.', '%s '.$plural.' not updated, somebody is editing them.', $bulk_counts['locked'] ),
+ 'deleted' => _n( '%s '.$singular.' permanently deleted.', '%s '.$plural.' permanently deleted.', $bulk_counts['deleted'] ),
+ 'trashed' => _n( '%s '.$singular.' moved to the Trash.', '%s '.$plural.' moved to the Trash.', $bulk_counts['trashed'] ),
+ 'untrashed' => _n( '%s '.$singular.' restored from the Trash.', '%s '.$plural.' restored from the Trash.', $bulk_counts['untrashed'] ),
+ );
- /**
- * Set textdomain
- *
- * @param string $textdomain Textdomain used for translation.
- */
- function set_textdomain( $textdomain ) {
- $this->textdomain = $textdomain;
- }
+ return $bulk_messages;
+ }
+
+ /**
+ * Flush
+ *
+ * Flush rewrite rules programatically
+ */
+ function flush() {
+ flush_rewrite_rules();
+ }
}