<?php
/**
* Class Tribe__Tickets__Admin__Columns
*
* Hooks additional admin columns for supported post types edit pages.
*
* This class does not contain the business logic, it only hooks the classes
* that will handle the logic.
*
* @link https://make.wordpress.org/docs/plugin-developer-handbook/10-plugin-components/custom-list-table-columns/#how-do-i-add-custom-list-table-columns
*/
class Tribe__Tickets__Admin__Columns {
/**
* An array of ticket column objects by supported post type.
*
* @var Tribe__Tickets__Admin__Columns__Tickets[]
*/
protected $columns = [];
/**
* Hooks the actions and filters needed to perform this class operations.
*/
public function hook() {
$this->add_custom_columns( (array) tribe_get_option( 'ticket-enabled-post-types', [] ) );
}
protected function add_custom_columns( $supported_types ) {
if ( empty( $supported_types ) ) {
return true;
}
foreach ( $supported_types as $supported_type ) {
$tickets_column = new Tribe__Tickets__Admin__Columns__Tickets( $supported_type );
add_filter( "manage_{$supported_type}_posts_columns", [ $tickets_column, 'filter_manage_post_columns' ] );
add_action( "manage_{$supported_type}_posts_custom_column", [ $tickets_column, 'render_column' ], 10, 2 );
// store the column for later use
$this->columns[ $supported_type ] = $tickets_column;
}
return true;
}
/**
* Returns the column associated with a post type.
*
* @param string $post_type The post type slug, e.g. 'post', 'page' or 'tribe_events'.
*
* @return Tribe__Tickets__Admin__Columns__Tickets|null Either the column object associated with the
* post type or `null` if no column object is
* associated with the post type.
*/
public function get_column_for_type( $post_type ) {
return isset( $this->columns[ $post_type ] ) ? $this->columns[ $post_type ] : null;
}
}
|