Files
roi-theme/wp-content/plugins/thrive-visual-editor/inc/classes/symbols/class-tcb-symbols-taxonomy.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

209 lines
5.1 KiB
PHP
Executable File

<?php
/**
* Thrive Themes - https://thrivethemes.com
*
* @package thrive-visual-editor
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Silence is golden!
}
class TCB_Symbols_Taxonomy {
const SYMBOLS_TAXONOMY = 'tcb_symbols_tax';
private $_default_terms;
public function __construct() {
$this->init();
}
public function init() {
add_action( 'init', [ $this, 'register_symbols_tax' ] );
add_filter( 'tcb_main_frame_localize', [ $this, 'terms_localization' ] );
}
public function register_symbols_tax() {
$tax_labels = $this->get_labels();
register_taxonomy( self::SYMBOLS_TAXONOMY, [ TCB_Symbols_Post_Type::SYMBOL_POST_TYPE ], [
'hierarchical' => true,
'labels' => $tax_labels,
'show_ui' => true,
'show_in_nav_menus' => false,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => [ 'slug' => 'tcb_symbol' ],
'show_in_rest' => true,
] );
register_taxonomy_for_object_type( self::SYMBOLS_TAXONOMY, TCB_Symbols_Post_Type::SYMBOL_POST_TYPE );
$this->insert_default_terms();
}
public function insert_default_terms() {
$terms = [ 'Headers', 'Footers', 'Gutenberg block' ];
foreach ( $terms as $term ) {
$exists = term_exists( $term, self::SYMBOLS_TAXONOMY );
if ( $exists !== 0 && $exists !== null ) {
$term_id = $exists['term_id'];
} else {
$term_insert = wp_insert_term( $term, TCB_Symbols_Taxonomy::SYMBOLS_TAXONOMY );
if ( ! is_wp_error( $term_insert ) ) {
$term_id = $term_insert['term_id'];
}
}
if ( isset( $term_id ) ) {
$this->add_default_term( $term_id );
}
}
}
public function get_default_terms() {
//take only h&f because others can be deleted in time
return array_splice( $this->_default_terms, 0, 2 );
}
public function add_default_term( $term_id ) {
$this->_default_terms[] = $term_id;
}
public function get_labels() {
$default_labels = array(
'name' => __( 'Symbols', 'thrive-cb' ),
'singular_name' => __( 'Symbol', 'thrive-cb' ),
'search_items' => __( 'Search Symbols', 'thrive-cb' ),
'all_items' => __( 'All Symbols', 'thrive-cb' ),
'parent_item' => __( 'Parent Symbol', 'thrive-cb' ),
'parent_item_colon' => __( 'Parent Symbol', 'thrive-cb' ),
'edit_item' => __( 'Edit Symbol', 'thrive-cb' ),
'update_item' => __( 'Update Symbol', 'thrive-cb' ),
'add_new_item' => __( 'Add New Symbol', 'thrive-cb' ),
'new_item_name' => __( 'New Symbol Name', 'thrive-cb' ),
'menu_name' => __( 'Symbols', 'thrive-cb' ),
);
return apply_filters( 'tcb_symbols_tax_labels', $default_labels );
}
/**
* Get the symbols taxonomies split by the fact if they are tax for sections or for normal symbols
*
* @param bool $show_tax_terms
*
* @return array|int|WP_Error
*/
public function get_symbols_tax_terms( $show_tax_terms = false ) {
$result = [];
$section_terms = [];
$terms = get_terms( [
'order' => 'DESC',
'orderby' => 'term_id',
'taxonomy' => self::SYMBOLS_TAXONOMY,
'hide_empty' => false,
] );
foreach ( $terms as $key => $term ) {
if ( ! in_array( $term->name, [ 'Headers', 'Footers' ] ) ) {
$result[] = $term;
} else {
$section_terms[] = $term;
}
}
if ( $show_tax_terms ) {
return $section_terms;
}
return $result;
}
/**
* Add categories to localization for tcb editor
*
* @param array $data
*
* @return mixed
*/
public function terms_localization( $data ) {
$data['symbols_tax_terms'] = $this->get_symbols_tax_terms();
$data['sections_tax_terms'] = $this->get_symbols_tax_terms( true );
$data['symbols_rest_terms'] = rest_url( sprintf( '%s/%s', 'wp/v2', self::SYMBOLS_TAXONOMY ) );
$data['symbols_rest_nonce'] = TCB_Utils::create_nonce();
$data['symbol_type'] = static::get_symbol_type( get_the_ID() );
return $data;
}
/**
* Get symbol type based on the category
*
* @param $symbol_id
*
* @return bool
*/
public static function get_symbol_type( $symbol_id = 0 ) {
$type = false;
if ( ! empty( $symbol_id ) ) {
$terms = get_the_terms( $symbol_id, self::SYMBOLS_TAXONOMY );
if ( ! empty( $terms ) ) {
$type = $terms[0]->slug;
}
}
return $type;
}
/**
* Returns a term id by name from the symbols taxonomy
*
* @param string $slug
*
* @return int
*/
public static function get_term_id( $slug ) {
$term = get_term_by( 'slug', $slug, static::SYMBOLS_TAXONOMY );
return ( $term ) ? $term->term_id : 0;
}
/**
* Add symbol to taxonomy
*
* @param int $id
* @param string $tax_slug
*/
public static function add_to_tax( $id, $tax_slug ) {
$term_id = static::get_term_id( $tax_slug );
wp_set_post_terms( $id, [ $term_id ], TCB_Symbols_Taxonomy::SYMBOLS_TAXONOMY );
}
}
global $tcb_symbol_taxonomy;
/**
* Main instance of TCB Symbols Dashboard
*
* @return TCB_Symbols_Taxonomy
*/
function tcb_symbol_taxonomy() {
global $tcb_symbol_taxonomy;
if ( ! $tcb_symbol_taxonomy ) {
$tcb_symbol_taxonomy = new TCB_Symbols_Taxonomy();
}
return $tcb_symbol_taxonomy;
}
tcb_symbol_taxonomy();