navasena/wp-content/plugins/thinkai-plugin/inc/abstracts/class-taxonomy-abstract.php

203 lines
4.1 KiB
PHP
Raw Normal View History

2024-07-31 13:12:38 +07:00
<?php
/**
* Abstract class for register post type
*
* @package WordPress
* @subpackage Student2 Plugin
* @author Shahbaz Ahmed <shahbazahmed9@hotmail.com>
* @version 1.0
*/
namespace THINKAIPLUGIN\Inc\Abstracts;
if ( ! function_exists( 'add_action' ) ) {
exit;
}
/**
* Abstract Post Type
* Implemented by classes using the same CRUD(s) pattern.
*
* @version 2.6.0
* @package THINKAIPLUGIN/Abstracts
* @category Abstract Class
* @author Wptech
*/
abstract class Taxonomy {
protected $taxonomy = '';
protected $singular = '';
protected $plural = '';
protected $menu_name = '';
protected $post_types = array();
protected $labels = array();
protected $admin_only = false;
protected $args = array();
protected $supports = array();
protected $rewrite = array();
protected $show_in_table = false;
protected $hierarchical = false;
function instance( $taxonomy, $singular, $plural ) {
$this->taxonomy = $taxonomy;
$this->singular = $singular;
$this->plural = $plural;
return $this;
}
/**
* The register function is used the register post type finally.
*
* @return [type] [description]
*/
public function register() {
if ( ! $this->taxonomy ) {
return;
}
$labels = array( 'labels' => ( $this->labels ) ? $this->labels : $this->labels() );
$args = ( $this->args ) ? $this->args : $this->args();
$args = array_merge( $labels, $args );
$post_types = $this->post_types ? $this->post_types : array( 'post' );
register_taxonomy( $this->taxonomy, $post_types, $args );
}
/**
* The args to set the post type.
*
* @return array Returns the array of arguments.
*/
public function args() {
$args = array(
'supports' => ( $this->supports ) ? $this->supports : $this->supports(),
'rewrite' => ( $this->rewrite ) ? $this->rewrite : $this->rewrites(),
);
if ( $this->admin_only ) {
$args['public'] = false;
}
return $args;
}
public function supports() {
return array( 'title', 'thumbnail', 'editor' );
}
public function labels() {
$menu_name = $this->menu_name;
if ( ! $menu_name ) {
$menu_name = $this->plural;
}
$singular = $this->singular;
$plural = $this->plural;
$labels = array(
'name' => sprintf( _x( '%s', 'taxonomy general name', 'student-2-plugin' ), $plural ),
'singular_name' => sprintf( _x( '%s', 'taxonomy singular name', 'student-2-plugin' ), $singular ),
'search_items' => sprintf( __( 'Search %s', 'student-2-plugin' ), $plural ),
'all_items' => sprintf( __( 'All %s', 'student-2-plugin' ), $plural ),
'parent_item' => sprintf( __( 'Parent %s', 'student-2-plugin' ), $singular ),
'parent_item_colon' => sprintf( __( 'Parent %s:', 'student-2-plugin' ), $singular ),
'edit_item' => sprintf( __( 'Edit %s', 'student-2-plugin' ), $singular ),
'update_item' => sprintf( __( 'Update %s', 'student-2-plugin' ), $singular ),
'add_new_item' => sprintf( __( 'Add New %s', 'student-2-plugin' ), $singular ),
'new_item_name' => sprintf( __( 'New %s Name', 'student-2-plugin' ), $singular ),
'menu_name' => sprintf( __( '%s', 'student-2-plugin' ), $singular ),
);
if ( $menu_name ) {
$labels['menu_name'] = $menu_name;
}
return $labels;
}
public function rewrites() {
return array(
'slug' => $this->taxonomy,
);
}
function set_labels( $labels = array() ) {
$this->labels = array_merge( $labels, $this->labels() );
return $this;
}
function set_supports( $supports = array() ) {
$this->supports = $supports;
return $this;
}
function set_rewrite( $rewrites = array() ) {
$this->rewrite = $rewrites;
return $this;
}
function set_args( $args = array() ) {
$this->args = array_merge( $args, $this->args() );
return $this;
}
function admin_only() {
$this->admin_only = true;
return $this;
}
function set_post_type( $post_type ) {
$this->post_types = $post_type;
return $this;
}
function show_in_table() {
$this->show_in_table = true;
return $this;
}
function hierarchical() {
$this->hierarchical = true;
return $this;
}
}