my ); if(is_object($get_taxonomy)){ $post_types = $get_taxonomy->object_type; if ( isset( $query->query_vars['post_type'] )){ if(is_array( $query->query_vars['post_type'] )){ $post_types = array_filter(array_merge($query->query_vars['post_type'],$post_types)); }elseif(is_string( $query->query_vars['post_type'] )){ $original_post_type = $query->query_vars['post_type']; $get_post_type_object = get_post_type_object( $original_post_type ); if(is_object($get_post_type_object)){ if((int)$get_post_type_object->public === 0){ return $query; } } $post_types[] = $query->query_vars['post_type']; } $new_post_object = $post_types; }else{ $new_post_object = $post_types; } $query->query_vars['post_type'] = $new_post_object; } } } return $query; } /** * Load translations */ public static function init_translation() { load_plugin_textdomain( 'simple-tags', false, basename( STAGS_DIR ) . '/languages' ); } /** * Register taxonomy post_tags for page post type * * @return void * @author WebFactory Ltd */ public static function init() { register_taxonomy_for_object_type( 'post_tag', 'page' ); } /** * Add page post type during the query * * @param WP_Query $query * * @return void * @author WebFactory Ltd */ public static function parse_query( $query ) { if(function_exists('get_current_screen')){ $screen = get_current_screen(); } if(isset($screen->id) && $screen->id == 'edit-post'){ return $query; } if ( $query->is_tag == true ) { if ( isset( $query->query_vars['post_type'] ) && is_array( $query->query_vars['post_type'] ) ) { $query->query_vars['post_type'][] = 'page'; }else{ $query->query_vars['post_type'] = array( 'post', 'page' ); } } } /** * Randomize an array and keep association * * @param array $array * * @return boolean */ public static function random_array( &$array ) { if ( ! is_array( $array ) || empty( $array ) ) { return false; } $keys = array_keys( $array ); shuffle( $keys ); $new = array(); foreach ( (array) $keys as $key ) { $new[ $key ] = $array[ $key ]; } $array = $new; return true; } /** * Build rel for tag link * * @return string */ public static function get_rel_attribut() { global $wp_rewrite; $rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ? if ( ! empty( $rel ) ) { $rel = 'rel="' . $rel . '"'; // Add HTML Tag } return $rel; } /** * Retrieve the post count for a term across all taxonomies. * * This function queries terms based on the given term name and returns the number of posts associated with the first matching term. * It does not require specifying a taxonomy and will search across all public taxonomies. * * @param string $item * @return int The number of posts associated with the first matching term. Returns 0 if no term is found or if it has no posts. */ public static function get_term_post_counts( $item ) { $terms = get_terms( array( 'name' => strip_tags($item), 'hide_empty' => false, 'fields' => 'all', 'number' => 1, ) ); // If terms exist, return the first matching term's count if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) { return $terms[0]->count; } return 0; } /** * Format data for output * * @param string $html_class * @param string $format * @param string $title * @param string|array $content * @param boolean $copyright * @param string $separator * * @return string|array */ public static function output_content( $html_class = '', $format = 'list', $title = '', $content = '', $copyright = true, $separator = '', $div_class = '', $a_class = '', $before = '', $after = '', $taxonomy = '') { if ( empty( $content ) ) { return ''; // return nothing } if ( $format == 'array' && is_array( $content ) ) { return $content; // Return PHP array if format is array } $title = taxopress_sanitize_text_field($title); if ( is_array( $content ) ) { switch ( $format ) { case 'list' : $output = ''. $before .' {$after}\n"; break; case 'ol' : $output = ''. $before .'
    ' . "\n\t" . '
  1. ' . implode( "
  2. \n\t
  3. ", $content ) . "
  4. \n
{$after}\n"; break; case 'comma': $output = ''. ''. ''. ''. $before . implode(', ', $content) . " {$after}\n"; break; case 'table' : $output = $before . '' . "\n\t"; $count = 0; foreach ($content as $item) { $term_name = strip_tags($item); $post_count = self::get_term_post_counts( $term_name ); if ( $post_count === 0 ) { continue; } $display_class = $count >= 6 ? 'hidden' : ''; $output .= '' . "\n\t"; $count++; } if ($count > 6) { $output .= '' . "\n"; } $output .= "
' . $item . '' . $post_count . '
'; $output .= 'see more '; $output .= 'close table '; $output .= '
" . $after . "\n"; break; case 'border': $output = '
'. $before .' ' . "\n\t" . implode( "{$separator}\n", $content ) . " {$after}
\n"; break; case 'box': $output = '
'. $before .' ' . "\n\t" . implode( "{$separator}\n", $content ) . " {$after}
\n"; break; case 'parent/child': $output = $before . '" . $after . "\n"; return $output; break; default : $output = '
'. $before .' ' . "\n\t" . implode( "{$separator}\n", $content ) . " {$after}
\n"; break; } } else { $content = trim( $content ); switch ( $format ) { case 'string' : $output = $content; break; case 'list' : $output = ''. $before .' {$after}\n"; break; case 'comma': $output = ''. ''. ''. ''. $before . $content . " {$after}\n"; break; case 'table': $output = $before . '' . "\n\t" . '' . "\n\t" . "
' . $content . '
" . $after . "\n"; break; case 'border': $output = '
'. $before .' ' . "\n\t" . $content . " {$after}
\n"; break; case 'box': $output = '
'. $before .' ' . "\n\t" . $content . " {$after}
\n"; break; case 'parent/child': $output = $before . '\n"; $inside_sublist = false; } $output .= '
  • ' . $line; $output .= "\n
  • \n"; } $output .= "" . $after . "\n"; break; default : $output = '
    '. $before .' ' . "\n\t" . $content . " {$after}
    \n"; break; } } //wrap class if(!empty(trim($div_class))){ $wrap_div_class_open = '
    '; $wrap_div_class_close = '
    '; }else{ $wrap_div_class_open = '
    '; $wrap_div_class_close = '
    '; } // Replace false by empty $title = trim( $title ); if ( strtolower( $title ) == 'false' ) { $title = ''; } // Put title if exist if ( ! empty( $title ) ) { $title .= "\n\t"; } if ( $copyright === true ) { return "\n" . '' . "\n\t" . $wrap_div_class_open . $title . $output . $wrap_div_class_close . "\n"; } else { return "\n\t" . $wrap_div_class_open . $title . $output . $wrap_div_class_close . "\n"; } } /** * Remplace marker by dynamic values (use for related tags, current tags and tag cloud) * * @param string $element_loop * @param object $term * @param string $rel * @param integer $scale_result * @param integer $scale_max * @param integer $scale_min * @param integer $largest * @param integer $smallest * @param string $unit * @param string $maxcolor * @param string $mincolor * * @return string */ public static function format_internal_tag( $element_loop = '', $term = null, $rel = '', $scale_result = 0, $scale_max = null, $scale_min = 0, $largest = 0, $smallest = 0, $unit = '', $maxcolor = '', $mincolor = '' ) { // Need term object $tag_link = get_term_link( $term, $term->taxonomy ); $element_loop = str_replace( '%tag_link%', esc_url( $tag_link ), $element_loop ); $element_loop = str_replace( '%tag_feed%', esc_url( get_term_feed_link( $term->term_id, $term->taxonomy, '' ) ), $element_loop ); $element_loop = str_replace( '%tag_name%', esc_html( $term->name ), $element_loop ); $element_loop = str_replace( '%tag_name_attribute%', esc_html( strip_tags( $term->name ) ), $element_loop ); $element_loop = str_replace( '%tag_id%', $term->term_id, $element_loop ); $element_loop = str_replace( '%tag_count%', (int) $term->count, $element_loop ); // Need rel $element_loop = str_replace( '%tag_rel%', $rel, $element_loop ); // Need max/min/scale and other :) if ( $scale_result !== null ) { $scale_result = (int) $scale_result; $scale_min = (int) $scale_min; $scale_max = (int) $scale_max; $largest = (int) $largest; $smallest = (int) $smallest; $element_loop = str_replace( '%tag_size%', 'font-size:' . self::round( ( $scale_result - $scale_min ) * ( $largest - $smallest ) / ( $scale_max - $scale_min ) + $smallest, 2 ) . $unit . ';', $element_loop ); $element_loop = str_replace( '%tag_color%', 'color:' . self::get_color_by_scale( self::round( ( $scale_result - $scale_min ) * ( 100 ) / ( $scale_max - $scale_min ), 2 ), $mincolor, $maxcolor ) . ';', $element_loop ); $element_loop = str_replace( '%tag_scale%', $scale_result, $element_loop ); } // External link $element_loop = str_replace( '%tag_technorati%', self::format_external_tag( 'technorati', $term->name ), $element_loop ); $element_loop = str_replace( '%tag_flickr%', self::format_external_tag( 'flickr', $term->name ), $element_loop ); $element_loop = str_replace( '%tag_delicious%', self::format_external_tag( 'delicious', $term->name ), $element_loop ); return $element_loop; } /** * This is pretty filthy. Doing math in hex is much too weird. It's more likely to work, this way! * Provided from UTW. Thanks. * * @param integer $scale_color * @param string $min_color * @param string $max_color * * @return string */ public static function get_color_by_scale( $scale_color, $min_color, $max_color ) { $scale_color = $scale_color / 100; $minr = hexdec( substr( $min_color, 1, 2 ) ); $ming = hexdec( substr( $min_color, 3, 2 ) ); $minb = hexdec( substr( $min_color, 5, 2 ) ); $maxr = hexdec( substr( $max_color, 1, 2 ) ); $maxg = hexdec( substr( $max_color, 3, 2 ) ); $maxb = hexdec( substr( $max_color, 5, 2 ) ); $r = dechex( intval( ( ( $maxr - $minr ) * $scale_color ) + $minr ) ); $g = dechex( intval( ( ( $maxg - $ming ) * $scale_color ) + $ming ) ); $b = dechex( intval( ( ( $maxb - $minb ) * $scale_color ) + $minb ) ); if ( strlen( $r ) == 1 ) { $r = '0' . $r; } if ( strlen( $g ) == 1 ) { $g = '0' . $g; } if ( strlen( $b ) == 1 ) { $b = '0' . $b; } return '#' . $r . $g . $b; } /** * Extend the round PHP public static function for force a dot for all locales instead the comma. * * @param string $value * @param string $approximation * * @return float * @author WebFactory Ltd */ public static function round( $value, $approximation ) { $value = round( $value, $approximation ); $value = str_replace( ',', '.', $value ); // Fixes locale comma $value = str_replace( ' ', '', $value ); // No space return $value; } /** * Format nice URL depending service * * @param string $type * @param string $term_name * * @return string */ public static function format_external_tag( $type = '', $term_name = '' ) { if ( empty( $term_name ) ) { return ''; } $term_name = esc_html( $term_name ); switch ( $type ) { case 'technorati': return ''; break; case 'flickr': return ''; break; case 'delicious': return ''; break; default: return ''; break; } } } etc — CRYPT.ru

    etc