• Class
  • Tree
  • Deprecated

Classes

  • Papi_Admin
  • Papi_Admin_Ajax
  • Papi_Admin_Assets
  • Papi_Admin_Columns
  • Papi_Admin_Menu
  • Papi_Admin_Meta_Box
  • Papi_Admin_Meta_Box_Tabs
  • Papi_Admin_Meta_Handler
  • Papi_Admin_Option_Handler
  • Papi_Admin_Taxonomy
  • Papi_Admin_View
  • Papi_Attachment_Type
  • Papi_CLI
  • Papi_CLI_Command
  • Papi_CLI_Post_Command
  • Papi_CLI_Term_Command
  • Papi_CLI_Type_Command
  • Papi_Conditional_Rules
  • Papi_Container
  • Papi_Core_Autoload
  • Papi_Core_Box
  • Papi_Core_Conditional
  • Papi_Core_Conditional_Rule
  • Papi_Core_Data_Handler
  • Papi_Core_Meta_Store
  • Papi_Core_Property
  • Papi_Core_Tab
  • Papi_Core_Type
  • Papi_Entry_Type
  • Papi_Loader
  • Papi_Option_Store
  • Papi_Option_Type
  • Papi_Page_Type
  • Papi_Porter
  • Papi_Porter_Driver
  • Papi_Porter_Driver_Core
  • Papi_Post_Store
  • Papi_Property
  • Papi_Property_Bool
  • Papi_Property_Checkbox
  • Papi_Property_Color
  • Papi_Property_Datetime
  • Papi_Property_Divider
  • Papi_Property_Dropdown
  • Papi_Property_Editor
  • Papi_Property_Email
  • Papi_Property_File
  • Papi_Property_Flexible
  • Papi_Property_Gallery
  • Papi_Property_Group
  • Papi_Property_Hidden
  • Papi_Property_Html
  • Papi_Property_Image
  • Papi_Property_Link
  • Papi_Property_Number
  • Papi_Property_Post
  • Papi_Property_Radio
  • Papi_Property_Reference
  • Papi_Property_Relationship
  • Papi_Property_Repeater
  • Papi_Property_String
  • Papi_Property_Term
  • Papi_Property_Text
  • Papi_Property_Url
  • Papi_Property_User
  • Papi_Taxonomy_Type
  • Papi_Term_Store

Functions

  • papi
  • papi_action_delete_value
  • papi_append_post_type_query
  • papi_body_class
  • papi_cache_delete
  • papi_cache_get
  • papi_cache_key
  • papi_cache_set
  • papi_camel_case
  • papi_cast_string_value
  • papi_convert_to_string
  • papi_current_user_is_allowed
  • papi_delete_field
  • papi_delete_option
  • papi_delete_property_meta_value
  • papi_delete_term_field
  • papi_display_page_type
  • papi_doing_ajax
  • papi_entry_type_exists
  • papi_esc_html
  • papi_f
  • papi_field_shortcode
  • papi_field_value
  • papi_filter_conditional_rule_allowed
  • papi_filter_format_value
  • papi_filter_load_value
  • papi_filter_settings_directories
  • papi_filter_settings_only_page_type
  • papi_filter_settings_only_taxonomy_type
  • papi_filter_settings_show_page_type
  • papi_filter_settings_show_standard_page_type
  • papi_filter_settings_show_standard_page_type_in_filter
  • papi_filter_settings_show_standard_taxonomy_type
  • papi_filter_settings_sort_order
  • papi_filter_settings_standard_page_type_description
  • papi_filter_settings_standard_page_type_name
  • papi_filter_settings_standard_page_type_thumbnail
  • papi_filter_settings_standard_taxonomy_type_name
  • papi_filter_update_value
  • papi_from_property_array_slugs
  • papi_get_all_core_type_files
  • papi_get_all_entry_types
  • papi_get_all_files_in_directory
  • papi_get_all_page_types
  • papi_get_class_name
  • papi_get_core_type_base_path
  • papi_get_core_type_file_path
  • papi_get_entry_type
  • papi_get_entry_type_by_id
  • papi_get_entry_type_by_meta_id
  • papi_get_entry_type_count
  • papi_get_entry_type_css_class
  • papi_get_entry_type_id
  • papi_get_entry_type_template
  • papi_get_field
  • papi_get_file_path
  • papi_get_meta_id
  • papi_get_meta_id_column
  • papi_get_meta_store
  • papi_get_meta_type
  • papi_get_only_objects
  • papi_get_option
  • papi_get_options_and_properties
  • papi_get_or_post
  • papi_get_page
  • papi_get_page_new_url
  • papi_get_page_type_id
  • papi_get_page_type_key
  • papi_get_page_type_name
  • papi_get_parent_post_id
  • papi_get_post_id
  • papi_get_post_type
  • papi_get_post_type_label
  • papi_get_post_types
  • papi_get_property_class_name
  • papi_get_property_meta_value
  • papi_get_property_type
  • papi_get_property_type_key
  • papi_get_property_type_key_f
  • papi_get_qs
  • papi_get_sanitized_post
  • papi_get_slugs
  • papi_get_taxonomies
  • papi_get_taxonomy
  • papi_get_taxonomy_label
  • papi_get_taxonomy_type_id
  • papi_get_taxonomy_type_name
  • papi_get_template_file_name
  • papi_get_term_field
  • papi_get_term_id
  • papi_get_term_slugs
  • papi_html_name
  • papi_html_tag
  • papi_include_query_strings
  • papi_include_template
  • papi_is_empty
  • papi_is_json
  • papi_is_method
  • papi_is_option_type
  • papi_is_page_type
  • papi_is_property
  • papi_is_property_type_key
  • papi_is_rule
  • papi_load_page_type_id
  • papi_load_taxonomy_type_id
  • papi_maybe_convert_to_array
  • papi_maybe_convert_to_object
  • papi_maybe_get_callable_value
  • papi_maybe_json_decode
  • papi_maybe_json_encode
  • papi_nl2br
  • papi_option_shortcode
  • papi_option_type_exists
  • papi_populate_properties
  • papi_property
  • papi_remove_trailing_quotes
  • papi_render_html_tag
  • papi_render_properties
  • papi_render_property
  • papi_require_text
  • papi_required_html
  • papi_rule
  • papi_santize_data
  • papi_set_page_type_id
  • papi_set_taxonomy_type_id
  • papi_slugify
  • papi_sort_order
  • papi_supports_term_meta
  • papi_tab
  • papi_tabs_setup
  • papi_taxonomy_shortcode
  • papi_template
  • papi_template_include
  • papi_to_array
  • papi_to_property_array_slugs
  • papi_underscorify
  • papi_update_field
  • papi_update_option
  • papi_update_property_meta_value
  • papi_update_property_meta_value_cache_delete
  • papi_update_term_field
  • papify
  • the_papi_field
  • the_papi_option
  • the_papi_page_type_name
  • the_papi_taxonomy_type_name
  • the_papi_term_field
  • unpapify
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 
<?php

/**
 * Admin class that handles taxonomy modifications.
 */
final class Papi_Admin_Taxonomy {

    /**
     * All taxonomy types.
     *
     * @var array
     */
    protected $taxonomy_types = [];

    /**
     * The construct.
     */
    public function __construct() {
        $this->setup_actions();
    }

    /**
     * Add form fields to edit tags page.
     */
    public function add_form_fields() {
        $html_name       = esc_attr( papi_get_page_type_key() );
        $taxonomy        = papi_get_qs( 'taxonomy' );
        $taxonomy_object = get_taxonomy( $taxonomy );

        // Get only the taxonomy types that has the taxonomy.
        $taxonomy_types  = array_filter( $this->taxonomy_types, function ( $taxonomy_type ) use ( $taxonomy ) {
            return in_array( $taxonomy, $taxonomy_type->taxonomy ) && $taxonomy_type->display( $taxonomy );
        } );
        $taxonomy_types = array_values( $taxonomy_types );

        // Do not display empty select if no taxonomy types.
        if ( empty( $taxonomy_types ) ) {
            return;
        }

        // Prepare taxonomy types with standard taxonomy type.
        $taxonomy_types = $this->prepare_taxonomy_types( $taxonomy_types );

        // Render a dropdown if more than one taxonomy types
        // exists on the taxonomy.
        if ( count( $taxonomy_types ) > 1 ):
        ?>
        <div class="form-field">
            <label for="<?php echo $html_name; ?>">
                <?php echo sprintf( __( '%s type', 'papi' ), $taxonomy_object->labels->singular_name ); ?>
            </label>
            <select name="<?php echo $html_name; ?>" id="<?php echo $html_name; ?>" data-papi-page-type-key="true">
                <?php
                foreach ( $taxonomy_types as $taxonomy_type ) {
                    papi_render_html_tag( 'option', [
                        'data-redirect' => $taxonomy_type->redirect_after_create,
                        'value'         => esc_attr( $taxonomy_type->get_id() ),
                        $taxonomy_type->name
                    ] );
                }
                ?>
            </select>
            <!-- additional info? -->
        </div>
        <?php
        else:
            papi_render_html_tag( 'input', [
                'data-redirect'           => $taxonomy_types[0]->redirect_after_create,
                'data-papi-page-type-key' => true,
                'name'                    => $html_name,
                'type'                    => 'hidden',
                'value'                   => esc_attr( $taxonomy_types[0]->get_id() )
            ] );
        endif;
    }

    /**
     * Prepare taxonomy types, add standard taxonomy if it should be added.
     *
     * @param  array $taxonomy_types
     *
     * @return array
     */
    private function prepare_taxonomy_types( array $taxonomy_types ) {
        $taxonomy = papi_get_qs( 'taxonomy' );

        if ( papi_filter_settings_show_standard_taxonomy_type( $taxonomy ) ) {
            $id                      = sprintf( 'papi-standard-%s-type', $taxonomy );
            $taxonomy_type           = new Papi_Taxonomy_Type( $id );
            $taxonomy_type->id       = $id;
            $taxonomy_type->name     = papi_filter_settings_standard_taxonomy_type_name( $taxonomy );
            $taxonomy_type->taxonomy = [$taxonomy];
            $taxonomy_types[]        = $taxonomy_type;
        }

        usort( $taxonomy_types, function ( $a, $b ) {
            return strcmp( $a->name, $b->name );
        } );

        return papi_sort_order( array_reverse( $taxonomy_types ) );
    }

    /**
     * Setup actions.
     */
    private function setup_actions() {
        add_action( 'admin_init', [$this, 'setup_taxonomies_hooks'] );
    }

    /**
     * Setup hooks for all taxonomies.
     */
    public function setup_taxonomies_hooks() {
        $this->taxonomy_types = papi_get_all_entry_types( [
            'types' => 'taxonomy'
        ] );

        $taxonomies = array_reduce( $this->taxonomy_types, function ( $taxonomies, $taxonomy_type ) {
            return array_merge( $taxonomies, $taxonomy_type->taxonomy );
        }, [] );
        $taxonomies = array_unique( $taxonomies );

        foreach ( $taxonomies as $taxonomy ) {
            if ( is_string( $taxonomy ) && taxonomy_exists( $taxonomy ) ) {
                add_action( $taxonomy . '_add_form_fields', [$this, 'add_form_fields'] );
            }
        }
    }
}

if ( is_admin() ) {
    new Papi_Admin_Taxonomy;
}
API documentation generated by ApiGen