labels->singular_name) ? strtolower($post_type_data->labels->singular_name) : 'post'; $post_taxonomies = get_object_taxonomies(get_post_type()); //add taxonomy $click_tags_taxonomy = '

'; //add method $click_tags_methods = ['name' => esc_html__( 'Name', 'simple-tags' ), 'count' => esc_html__( 'Counter', 'simple-tags' ), 'random' => esc_html__( 'Random', 'simple-tags' )]; $click_tags_method = '

'; //add order $click_tags_orders = ['asc' => esc_html__( 'Ascending', 'simple-tags' ), 'desc' => esc_html__( 'Descending', 'simple-tags' )]; $click_tags_order = '

'; //add limit $click_tags_limit= '

'; //add searchbox $click_tags_search= '

'; //create tags search data $click_tags_options= '
'. $click_tags_search.' '.$click_tags_taxonomy.' '.$click_tags_method.' '.$click_tags_order.' '.$click_tags_limit.'
'; //metabox edit line if(current_user_can('admin_simple_tags')){ $click_term_edit = ' '. sprintf( '%s', add_query_arg( [ 'page' => 'st_suggestterms', 'add' => 'new_item', 'action' => 'edit', 'taxopress_suggestterms' => $click_terms['ID'], ], admin_url('admin.php') ), __('Edit this metabox', 'simple-tags') ) .' '; }else { $click_term_edit = ''; } wp_localize_script( 'st-helper-click-tags', 'stHelperClickTagsL10n', array( 'show_txt' => esc_html__( 'Click to display tags', 'simple-tags' ), 'hide_txt' => sprintf( esc_html__( 'Click terms to add them to this %s', 'simple-tags' ), $post_type_name ), 'state' => 'show', 'search_icon' => STAGS_URL . '/assets/images/indicator.gif', 'search_box' => '', 'click_tags_options' => $click_tags_options, 'edit_metabox_link' => $click_term_edit, ) ); // Helper for post type wp_enqueue_script( 'st-helper-click-tags' ); } /** * Register metabox * * @return void * @author WebFactory Ltd */ public static function admin_head() { $click_terms = taxopress_current_post_suggest_terms('existing_terms'); if(!is_array($click_terms)){ return; } add_meta_box( 'st-clicks-tags', __( 'Show existing terms', 'simple-tags' ), array( __CLASS__, 'metabox', ), get_post_type(), 'advanced', 'core' ); } /** * Put default HTML for people without JS * * @return void * @author WebFactory Ltd */ public static function metabox() { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo SimpleTags_Admin::getDefaultContentBox(); } /** * Ajax Dispatcher * * @return void * @author WebFactory Ltd */ public static function ajax_check() { if ( isset( $_GET['stags_action'] ) && 'click_tags' === $_GET['stags_action'] ) { self::ajax_click_tags(); } } /** * Display a span list for click tags * * @return void * @author WebFactory Ltd */ public static function ajax_click_tags() { status_header( 200 ); // Send good header HTTP header( 'Content-Type: text/html; charset=' . get_bloginfo( 'charset' ) ); $taxonomy = isset($_GET['click_tags_taxonomy']) ? sanitize_text_field($_GET['click_tags_taxonomy']) : 'post_tag'; if ( 0 === (int) wp_count_terms( $taxonomy, array( 'hide_empty' => false ) ) ) { // No tags to suggest echo '

' . esc_html__( 'No terms in your WordPress database.', 'simple-tags' ) . '

'; exit(); } // Prepare search $search = ( isset( $_GET['q'] ) ) ? trim( stripslashes( sanitize_text_field($_GET['q']) ) ) : ''; $post_id = ( isset( $_GET['post_id'] ) ) ? intval( $_GET['post_id'] ) : 0; if(isset($_GET['click_tags_method']) && !empty($_GET['click_tags_method'])){ $order_click_tags = ($_GET['click_tags_method'] === 'random') ? sanitize_text_field($_GET['click_tags_method']) : sanitize_text_field($_GET['click_tags_method']).'-'.sanitize_text_field($_GET['click_tags_order']); }else{ // Order tags before selection (count-asc/count-desc/name-asc/name-desc/random) $order_click_tags = 'random'; } switch ( $order_click_tags ) { case 'count-asc': $order_by = 'tt.count'; $order = 'ASC'; break; case 'random': $order_by = 'RAND()'; $order = ''; break; case 'count-desc': $order_by = 'tt.count'; $order = 'DESC'; break; case 'name-desc': $order_by = 't.name'; $order = 'DESC'; break; default: // name-asc $order_by = 't.name'; $order = 'ASC'; break; } $term_limit = isset($_GET['click_tags_limit']) ? (int)$_GET['click_tags_limit'] : 100; if ($term_limit > 0) { $limit = 'LIMIT 0, '.$term_limit; }else{ $limit = ''; } // Get all terms, or filter with search $terms = SimpleTags_Admin::getTermsForAjax( $taxonomy, $search, $order_by, $order, $limit ); if ( empty( $terms ) ) { echo '

' . esc_html__( 'No results from your WordPress database.', 'simple-tags' ) . '

'; exit(); } // Get terms for current post $post_terms = array(); if ( $post_id > 0 ) { $post_terms = wp_get_post_terms( $post_id, $taxonomy, array( 'fields' => 'ids' ) ); } foreach ( (array) $terms as $term ) { $class_current = in_array($term->term_id, $post_terms) ? 'used_term' : ''; echo '' . esc_html( stripslashes( $term->name ) ) . '' . "\n"; } echo '
'; exit(); } }