Basically rtBiz deals with two types on entities as of now.
- Contact
- Company
Each of the above entity is a Custom Post Type in WordPress.
We have build the base of this plugin such as this entities can be extended or even a new entity can be added later on if required.
We abstracted a parent class for all the entities in rtBiz family named Rtbiz_Entity
. Other specific entities will inherit this class and automatically get all the common methods/attributes on its own.
So structure would go as follows:
|-Rtbiz_Entity
|-Rtbiz_Contact
|-Rtbiz_Company
Class Rtbiz_Entity
Attributes
Common attributes that are defined in Rtbiz_Entity
class:
$enabled_post_types
An array of post types with which the entity is to be linked.
$post_type
Slug of post type for the entity
$labels
An array of labels for entity post type
$meta_fields
An array that holds all the custom meta fields that are required for entity
$meta_key_prefix
Prefix string for all the meta keys of entity.
Methods
A few common methods that are defined in Rtbiz_Entity
class:
__construct()
Constructor method for the class.
@uses Rtbiz_Entity::hooks() - rtBiz Core. Initializes hooks for this class.
init_entity()
Initializes the post_type in WordPress.
@uses Rtbiz_Entity::register_post_type to register the post type.
hooks()
Common hooks that are needed to be added for entity
@uses is_admin() - WordPress Core. To check for admin section.
@uses add_action() - WordPress Core.
@uses add_filter() - WordPress Core.
@uses rt_biz_get_redux_settings() - rtBiz Core. To check for products settings.
@uses do_action() - WordPress Core. To introduce an action hook.
@defined Rtbiz_Entity - Custom WP Action. This can be used to add extra hooks from other plugins/themes.
Example
add_action( 'rt_biz_entity_hooks', 'my_entity_hook' );
function my_entity_hook( $entity_obj ) {
if ( $entity_obj->post_type == 'rt_contact' ) {
add_action( 'init', 'my_custom_init' );
}
}
function my_custom_init() {
echo "Yo ! I got into init function.";
}
edit_product_columns( $product_columns )
This method adds additional column into the list table of Products Taxonomy. It adds those columns for CPT with which Products are linked.
@param $products_columns array - An array of all the columns with their labels for Products Taxonomy List Table.
@return $products_columns array - An updated array of columns.
@uses apply_filter() - WordPress Core. To introduce a filter hook.
@defined rt_biz_products_columns - Custom WP Filter. This can be used to add/remove additional column in Products List Table.
Example
add_filter( 'rt_biz_products_columns', 'my_offerings_columns' );
function my_offerings_columns( $columns ) {
$columns[ 'my-custom-column' ] = __( 'My Custom Column' );
return $columns;
}
add_products_column_content( $content, $column_name, $term_id )
This method is used to put content for for each row for all the custom columns that we have added using the above method.
@param $content string - Content to be displayed in the row for column
@param $column_name string - Column Slug
@param $term_id int - Term ID of the Row
@return $content string - New/Updated content for the Term row.
@uses apply_filter() - WordPress Core. To add a filter hook.
@defined rt_biz_product_column_content - Custom WP Filter. This is used to add custom content in Products table column.
Example
add_filter( 'rt_biz_product_column_content', 'my_offering_column_content' );
function my_offering_column_content( $content, $column_name, $term_id ) {
if ( $column_name == 'my-custom-column' ) {
$content = 'Yo ! This is new content for new custom column!';
}
return $content;
}
skip_feed_comments( $where )
This method filters out rtBot
comments from the WordPress feeds.
@param $where string - Default where clauses coming from WodPress Comments query.
@return @where string - Updated where clauses
preprocess_comment_handler( $commentdata )
This method filters out rtBot
comments from default comments query, Dashbord Widgets & comments list table.
@param $commentdata object - Comment Object coming from WordPress Core
@return $commentdata object - Updated comment object prepared for query.
save_old_data( $post_id )
This method gets called when a entity is saved from admin panel. It is used to store the text-diff between previous values and new values of post attributes & meta fields. It is useful for rtBot Comments.
@param $post_id int - Post ID of Entity
@uses get_post() - WordPress Core. To get the current post
@uses rt_biz_text_diff() - rtBiz Core. To generate the text-diff for two values
@uses rt_biz_get_contact_post_type() - rtBiz Core. Fetches contact post type
@uses rt_biz_get_company_post_type() - rtBiz Core. Fetches company post type
@uses rt_biz_is_primary_email_unique() - rtBiz Core. Checks for duplicate email address
@uses rt_biz_is_primary_email_unique_company() - rtBiz Core. Checks for duplicate email address
@uses Rtbiz_Entity::get_meta() - rtBiz Core. fetches meta value for the given key.
@uses wp_get_current_user() - WordPress Core. Gets current logged in use.
@uses rt_biz_get_redux_settings() - rtBiz Core. Fetches Biz settings to get the label.
@uses wp_insert_comment() - WordPress Core. Inserts rtBot comment.
change_publish_button( $translation, $text )
Publish button label for entity changed to “Add”, since this will not be typical WordPress post that we want to publish
@param $translation string - Translated String
@param $text string - Actual String
@return $translation string - Translated String.
@uses get_post_type() - WordPress Core. To fetch the current post type
enqueue_scripts_styles()
Loads all the required Scripts/Styles. Though this will be used very less, since the aim will be to use WordPress Native elements at most.
@uses wp_script_is() - WordPress Core. To check if script is already enqueued or not.
@uses wp_enqueue_script() - WordPress Core. To enqueue script.
@uses wp_enqueue_style() - WordPress Core. To enqueue style.
entity_meta_boxes()
Adds any metaboxes on Edit Post page for entity.
@uses add_meta_box() - WordPress Core. To add custom metabox for CPT of entity.
@uses do_action() - WordPress Core. To define custom WP action.
@defined rt_biz_entity_meta_boxes - Custom WP Action. This action can be used to extra metaboxes from other plugins/themes.
Example
add_action( 'rt_biz_entity_meta_boxes', 'my_custom_metabox' );
function my_custom_metabox( $entity_post_type ) {
if ( $entity_post_type == 'rt_contact' ) {
add_meta_box( 'rt-biz-custom-metaboz', __( 'Custom Metabox' ), 'render_custom_metabox', $entity_post_type, 'side', 'default' );
}
}
function render_custom_metabox( $post ) {
echo "Yo! Custom Metabox Got Renedered !";
}
render_assign_to_meta_box( $post )
This method renders metabox of Entity’s Assignee.
@param $post object - WP Post object
@uses rt_biz_get_entity_meta() - rtBiz Core. Fetches entity meta for given key.
@uses get_user_by() - WordPress Core. Get user by given search key.
@uses get_avatar() - WordPress Core. Gets user gravatar.
@uses get_edit_user_link() - WordPress Core. Gets edit link of user profile page.
@uses rt_biz_get_module_employee() - rtBiz Core. Fetches Employees from Contacts pool.
@uses do_action() - WordPress Core. To define new WP Action.
@defined rt_biz_assign_to_metabox_after - Custom WP Action. This action can be used to add custom mark up in assignee metabox for entity.
Example
add_action( 'rt_biz_assign_to_metabox_after', 'my_custom_assign_to_metabox_after' );
function my_custom_assign_to_metabox_after( $post, $entity_post_type ) {
if ( $entity_post_type == 'rt_contact' ) {
echo "Yo ! Assignee Metabox Additional markup is added here !";
}
}
save_meta_assign_to( $post )
This method saves assignee value for Entity.
@param $post object - WP Post Object
$uses rt_biz_update_entity_meta() - rtBiz Core. Updates meta value of an entity for given key.
render_additional_details_meta_box( $post )
Common metabox that will be rendered for Entity. This will give you additional general information about the entity.
@param $post object - WP Post Object
@uses do_action() - WordPress Core. To define new actions.
@uses wp_get_post_terms() - WordPress Core. Gets post terms for the given post id & category.
@uses apply_filters() - WordPress Core. To define new filters.
@uses Rtbiz_Entity::get_meta() - rtBiz Core. Gets meta value of entity for given key.
@uses wp_nonce_field() - WordPress Core. Generates a nonce value for the form.
@uses Rtbiz_Entity::print_metabox_js() - rtBiz Core. Prints JS code in script tag if added.
@defined rt_biz_before_render_meta_fields - This action is used when additional markup needs to be added before meta fields.
@defined Rtbiz_Entity_fields_loop_single_field - This filter is used when any field attributes needs to be changed/filtered.
@defined rt_biz_after_render_meta_fields - This action is useful when extra markup is required to add after meta fields.
@defined rt_biz_print_metabox_js - This action lets you add any additional JS script in the markup.
Example
add_action( 'rt_biz_before_render_meta_fields', 'my_custom_before_meta_fields' );
add_action( 'rt_biz_after_render_meta_fields', 'my_custom_after_meta_fields' );
add_action( 'rt_biz_print_metabox_js', 'my_custom_metabox_js' );
add_filter( 'rtbiz_entity_fields_loop_single_field', 'my_custom_loop_sigle_field' )
function my_custom_before_meta_fields( $post, $entity_object ) {
echo "Yo! This gets added at the start of meta field markup !";
}
function my_custom_after_meta_fields( $post, $entity_object ) {
echo "Yo! This gets added at the end of meta field markup !";
}
function my_custom_metabox_js( $post, $entity_object ) {
echo "<script>console.log("Yo ! This is the right place to add custom JS !");</script>";
}
function my_custom_loop_sigle_field( $field ) {
// Remove contact fax field
if ( $field['key'] == 'contact_fax' ) {
return array();
}
return $field;
}
print_metabox_js()
Prints JS related to Metabox, if at all required. This method can be overridden in child classes.
save_entity_details( $post_id )
Saves any additional details from the metabox, if they are used.
@param $post_id int - WordPress Post ID
@uses wp_verify_nonce() - WordPress Core. This verifies the valid nonce.
@uses Rtbiz_Entity::save_meta_assign_to() - rtBiz Core. Save assignee of entity.
@uses Rtbiz_Entity::save_meta_values() - rtBiz Core. Save other meta values of entity.
save_meta_values( $post_id )
Saves any meta values, if they are used.
@param $post_id int - WordPress Post ID
@uses do_action() - WordPress Core. To define new action.
@defined rt_biz_save_entity_meta - This action is used to save any extra meta values for entity.
post_table_columns( $columns )
This defines any custom columns for WordPress List View page of Entity
@param $columns array - Columns array for Entity List Table.
@uses apply_filters() - To add new WP filter hook.
@defined rt_entity_columns - This filter is used to add/update custom columns for Entity List Table.
manage_post_table_columns( $column, $post_id )
This method lets you add custom data for the custom column that you defined in above method.
@param $column string - Column Slug
@param $post_id int - WordPress Post ID
@uses do_action() - WordPress Core. To add new action hook.
@defined rt_entity_manage_columns - This is used to manage column value for Entity List Table.
init_connection( $post_type, $label )
rtBiz gives you power to connect this entities with any other post type of your choice. This methods initializes this connection.
@param $post_type string - WordPress Post Type to connect with entity.
@param $label string - Label to define for P2P connection
@uses add_action() - WordPress Core. Initialize P2P Connection.
create_connection()
This method creates the relation between two posts types mentioned in above method.
@uses p2p_register_connection_type() - P2P Plugin. Registers new connection between two entities.
clear_post_connections_to_entity()
Wipe out any existing connections between two post objects of posts types that are explained above.
@param $post_type string - WordPress Post Type
@param $from mixed - Either Post Object or Post ID to clear the P2P connection
@uses p2p_delete_connections() - P2P Plugin. deletes existing connection for given post type and post.
connect_post_to_entity( $post_type, $from = '', $to = '' )
Links two post object of given post types.
@param $post_type string - WordPress Post Type
@param $from mixed - WordPress Post ID or Post Object
@param $to mixed - WordPress Post ID or Post Object
@uses p2p_connection_exists() - P2P Plugin. Check if connection exists or not.
@uses p2p_create_connection() - P2P Plugin. creates new connection between two entities.
connection_to_string( $post_id, $connection, $term_seperator = ' , ' )
Converts a connection object into a string. Used for getting a difference between two relations.
@param $post_id int - WordPress Post ID
@param $connection string - Connection Type
@param $term_seperator string - separator character. Default: ' , '
@uses get_post() - WordPress Core.
@uses get_posts() - WordPress Core.
register_post_type( $name, $labels )
Register a WordPress post type for entity.
@param $name string - Post type slug
@param $labels array - Array of Label Strings for Post Type
@uses register_post_type() - WordPress Core.
get_posts_for_entity( $post_id, $post_type, $fetch_entity )
This fetches list of posts connected with a single post object.
@param $post_id int - WordPress Post ID
@param $post_type string - Post Type to check with
@param $fetch_entity bool - entity flag. Default: false. If true is passed then this function will return list of entities. Otherwise list of connected posts.
@uses get_posts() - WordPress Core.
get_post_type_capabilities()
Gives you an array of required capabilities for a entity. Used in rtBiz ACL.
@return array - Array of available capabilities for Entity.
add_meta( $id, $key, $value, $unique )
Adds a meta value.
@param $id int - WordPress Post ID
@param $key string - Meta Key
@param $value string - Meta value
@param $unique bool - Whether the same key should not be added. Default false.
@uses add_post_meta() - WordPress Core.
get_meta( $id, $key, $single )
Gets a meta value.
@param $id int - WordPress Post ID
@param $key string - Meta Key
@param $single bool - Whether to return a single value. Default false.
@uses get_post_meta() - WordPress Core.
@return mixed - Meta value of entity for the given meta key.
update_meta( $id, $key, $value, $prev_value )
Updates a meta value.
@param $id int - WordPress Post Id
@param $key string - Meta Key
@param $value mixed - New Meta Value
@param $prev_value mixed - Old Meta value
@uses update_post_meta() - WordPress Core.
delete_meta( $id, $key, $value )
Deletes a meta value.
@param $id int - WordPress Post ID
@param $key string - Meta Key
@param $value mixed - Meta value
@uses delete_post_meta() - WordPress Core.
search( $query, $args )
Search for entity for given term
@param $query string - Keyword to search
@param $args array - WordPress WP_Query arguments.
@uses WP_Query - WordPress Core.
Hooks
Hooks available for this class:
Actions
rtbiz_entity_hooks
@param $entity // entity Object will be called with this action. Either contact or company
Entity action will be called with entity object.
rtbiz_entity_meta_boxes
@param $post_type // post type of entity object ie. contact or company
Will be called with meta boxes.
rtbiz_before_render_meta_fields
@param $meta_fields // additional meta fields to be renders
Called before rendering additional metabox.
rtbiz_after_render_meta_fields
@param $post // Wp post for current object contact or company
@param $post_type //post type of current object.
rtbiz_print_metabox_js
@param $post // Wp post for current object contact or company
@param $post_type //post type of current object.
To echo additional js if there any.
rtbiz_save_entity_meta
@param $post // Wp post for current object contact or company
@param $post_type //post type of current object.
@param $obj // object of entity class
To save added additional metabox.
rtbiz_entity_manage_columns
@param $column // column
@param $post_id // post id of contact or company
@param $obj // object of entity class
To mange custom column using wordpress hook 'manage_'.$post-type.'_posts_custom_column
Filters
rtbiz_entity_fields_loop_single_field
@param $field
Can be used when user want to change perticular field from additional meta.
rtbiz_entity_columns
@param $columns
@param $obj
It uses wordpress manage_' . $post_type . '_posts_columns
filter can be used to manage columns.
NOTE: You can check the methods documentation above on how to make use of these hooks ( actions and filters ).