1030x403.
"); } /* * Add a post's category name to body class. * See https://bavotasan.com/2011/add-a-posts-category-name-to-body-class-in-wordpress/ */ add_filter( 'body_class', 'add_category_name' ); function add_category_name( $classes = '' ) { if ( is_single() ) { $category = get_the_category(); $classes[] = 'category-' . $category[0]->slug; } return $classes; } /* * Visual consolidation of tag clouds. * See https://codex.wordpress.org/Function_Reference/wp_tag_cloud */ add_filter( 'widget_tag_cloud_args', 'custom_tag_cloud_widget' ); function custom_tag_cloud_widget( $args ) { $args['number'] = 0; // Adding a 0 will display all tags. $args['largest'] = 38; // Largest tag. $args['smallest'] = 12; // Smallest tag. $args['unit'] = 'px'; // Tag font unit. return $args; } /* * Remove Pingbacks from Recent Comments Widget. * http://ronangelo.com/remove-pingbacks-on-recent-comments-widget */ add_filter( 'widget_comments_args', 'remove_pingbacks_recent_comments' ); function remove_pingbacks_recent_comments( $array ) { $array['type'] = 'comment'; return $array; } /* * This function alter default title. * See http://www.kriesi.at/documentation/enfold/replace-the-default-blog-latest-news-title */ add_filter( 'avf_title_args', 'fix_single_post_title', 10, 2 ); function fix_single_post_title( $args, $id ) { $title = $args['title']; if ( is_single() ) { if ( get_post_type() == 'quote' ) { $args['title'] = 'Libro de citas'; } else { // Post categories by name: $categories = array_values( array_column( get_the_category(), 'name' ) ); switch ($categories[0]) { case 'Blog': $args['title'] = 'En el blog'; break; case 'Notas rápidas': $args['title'] = 'En mis notas'; break; case 'Snippets': $args['title'] = 'Picando código'; break; case 'Álbum de fotos': $args['title'] = 'Foto del álbum'; break; } } } elseif ( is_category() || is_tag() ) { $args['title'] = 'Publicado en: ' . mb_substr( $args['title'], mb_strpos( $args['title'], ': ' ) + 2 ); } elseif ( is_tax( 'quote_author_tag' ) ) { $args['title'] = 'Citas de ' . mb_substr( $args['title'], mb_strpos( $args['title'], ': ' ) + 2 ); } if ( $args['title'] != $title ) { $args['link'] = NULL; $args['heading'] = 'h1'; } return $args; } /* * Tag page with excerpt and featured image. * See http://www.kriesi.at/support/topic/archive-page-with-excerpt-and-featured-image/ */ add_filter( 'avf_blog_style', 'avia_change_tag_page_layout', 10, 2 ); function avia_change_tag_page_layout( $layout, $context ) { if ( is_tag() ) { $layout = 'single-small'; } return $layout; } /* * Register new icons as a theme icons fot GitHub and GitLab. * See https://kriesi.at/documentation/enfold/custom-social-icons/ */ add_filter( 'avf_default_icons', 'avia_add_custom_icon', 10, 1 ); function avia_add_custom_icon( $icons ) { $icons['github'] = array( 'font' =>'fontello', 'icon' => 'uf09b' ); $icons['gitlab'] = array( 'font' =>'fontello', 'icon' => 'uf296' ); return $icons; } add_filter( 'avf_social_icons_options', 'avia_add_custom_social_icon', 10, 1 ); function avia_add_custom_social_icon( $icons ) { $icons['GitHub'] = 'github'; $icons['GitLab'] = 'gitlab'; return $icons; } /* * Force avia_post_nav() to cycling categories. * See http://www.kriesi.at/support/topic/avia_post_nav-function-not-cycling-categories-even-when-set-to-true */ add_filter( 'avf_post_nav_settings', 'avia_same_category_filter', 10, 1 ); function avia_same_category_filter( $settings ) { $settings['same_category'] = true; return $settings; } /* * Hide some terms in taxonomy list under post in wordpress. * See https://stackoverflow.com/questions/11245378/how-to-hide-some-categories-in-category-list-under-post-in-wordpress */ add_filter( 'get_the_terms', 'exclude_taxonomy_terms', 10, 3 ); function exclude_taxonomy_terms( $terms, $post, $taxonomy ) { // List of taxonomy terms (slugs) to exclude: $exclude_slugs = array( 'portada', 'pelis-y-series', 'lecturas', 'twitter', 'linkedin', 'facebook' ); if ( !is_admin() ) { foreach( $terms as $key => $term ) { if ( $term->taxonomy == "post_tag" && in_array( $term->slug, $exclude_slugs ) ) { unset( $terms[$key] ); } } } return $terms; } /* * Breadcrumb formatting for categories content. * See http://www.kriesi.at/support/topic/how-to-modify-in-child_theme-the-function-avia_breadcrumbs-finished-with-s */ add_filter( 'avia_breadcrumbs_trail', 'avia_change_breadcrumb', 50, 2 ); function avia_change_breadcrumb( $trail, $args ) { if ( is_tag() ) { array_splice( $trail, 1, 0, array( 'Etiquetas' ) ); } elseif ( is_category() ) { $trail = array(); } return $trail; } /* * Auto generate the post title if it's empty and post has content. And share * content in social networks if required. */ add_filter( 'wp_insert_post_data', 'before_save_post', 1, 2 ); function before_save_post( $data, $postarr ) { $text_title = clean_content( $data['post_title'] ); $text_content = clean_content( $data['post_content'] ); $text_excerpt = clean_content( $data['post_excerpt'] ); if ( $text_title == 'INSTAGRAM' ) { // Instagram captures: if ( empty( $text_content ) ) { $text_title = "He publicado en Instagram"; $text_excerpt = $text_title; } else { $text_excerpt = text_with_limit( $text_content ); $dotpos = strpos( $data['post_content'], '. ' ); $text_title = $dotpos > 0 ? substr( $data['post_content'], 0, $dotpos ) : $data['post_content']; $text_title = clean_content( $text_title ); $title_words = words_from_text( $text_title ); if ( count( $title_words ) > 10 ) { $text_title = text_with_words( $title_words, 8 ); } else { $data['post_content'] = substr( $data['post_content'], $dotpos + 2 ); } } } else { if ( empty( $text_title ) && ! empty( $text_content ) ) { $text_title = text_with_words( words_from_text( $text_content ), 4 ); } $text_excerpt = text_with_limit( $text_content, 140 - strlen( $text_title ) - 2 ); } $data['post_title'] = $text_title; $data['post_excerpt'] = $text_excerpt; return $data; } function clean_content( $content ) { // Remove [av_...] Avia layout shortcodes to get only text: $content = preg_replace( '/\[\/?av_one[^\]]*\]/', '', $content ); $content = preg_replace( '/\[\/?av_two[^\]]*\]/', '', $content ); $content = preg_replace( '/\[\/?av_three[^\]]*\]/', '', $content ); $content = preg_replace( '/\[\/?av_four[^\]]*\]/', '', $content ); $content = preg_replace( '/\[\/?av_section[^\]]*\]/', '', $content ); $content = preg_replace( '/\[\/?av_layout[^\]]*\]/', '', $content ); $content = preg_replace( '/\[\/?av_cell[^\]]*\]/', '', $content ); $content = preg_replace( '/\[\/?av_tab[^\]]*\]/', '', $content ); $content = preg_replace( '/\[\/?av_textblock[^\]]*\]/', '', $content ); // And then remove all shortcodes: $content = strip_shortcodes( $content ); // Replace ' ' with space character: $content = str_replace( ' ', ' ', $content ); // Convert more than one space in one: $content = preg_replace( '!\s+!', ' ', $content ); // Return clean content: return trim( strip_tags( $content ) ); } function words_from_text( $text ) { return explode( ' ', $text ); } function text_with_words( $words, $number_of_words = 0 ) { if ( $number_of_words > 0 && count( $words ) > $number_of_words ) { return implode( ' ', array_slice( $words, 0, $number_of_words ) ) . ' …'; } return implode( ' ', $words ); } function text_with_limit( $text, $limit = 140 ) { $text = mb_substr( $text, 0, $limit ); if ( mb_strlen( $text ) == $limit ) { $text = mb_substr( $text, 0, mb_strrpos( $text, ' ' ) ); if ( mb_substr( $text, -1, 1 ) != '.' ) { $text .= ' …'; } } return $text; } /* * Default image fallback. * See https://www.artifaktdigital.com/use-yoast-seo-ogimage-as-a-fallback-featured-image-a-tutorial/ * add_filter( 'post_thumbnail_html', 'social_post_defautl_thumbnail', 20, 5 ); function social_post_defautl_thumbnail( $html, $post_id, $post_thumbnail_id, $size, $attr ) { global $wpdb; if ( empty( $html ) ) { // Return you Yoast SEO default image if the post thumbnail html is empty: $opt = get_option( 'wpseo_social' ); $url = $opt['og_default_image']; if ( $id !== '' ) { // Retrieves the attachment ID from the file URL: $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid = '%s';", $url ) ); $id = $attachment[0]; return wp_get_attachment_image( $id, $size ); } } return $html; } */ /* * Add a button to display the number of characters in Title and Content editor; * and also add a character counter to the Excerpt box (with no limit). * See https://premium.wpmudev.org/blog/character-counter-excerpt-box */ add_action( 'admin_head-post.php', 'char_counter_js' ); add_action( 'admin_head-post-new.php', 'char_counter_js' ); function char_counter_js() { if ( get_post_type() == 'post' ) { echo ' '; } } /* * New widget for Enfold theme. Display the single post header with the slider, * title and meta info. */ add_action( 'widgets_init', function() { register_widget( 'enfold_post_header_widget' ); }); class enfold_post_header_widget extends WP_Widget { function __construct() { parent::__construct( // Base ID: 'enfold_post_header_widget', // Widget name will appear in UI: __( 'Enfold Cille Post Header', 'avia_framework' ), // Widget description: array( 'description' => __( 'Display the single post header with the slider, title and meta info', 'avia_framework' ) ) ); } public function widget( $args, $instance ) { global $avia_config; echo $args['before_widget']; $blog_style = avia_get_option( 'single_post_style', 'single-big' ); $blog_global_style = avia_get_option( 'blog_global_style', '' ); $the_id = get_the_ID(); // Get the current post id, the current post class and current post format: $url = ''; $current_post = array(); $current_post['the_id'] = $the_id; $current_post['post_type'] = get_post_type( $current_post['the_id'] ); $current_post['post_class'] = 'post-entry-' . $current_post['the_id'] . ' ' . $blog_style; $current_post['post_class'] .= $current_post['post_type'] == 'post' ? '' : ' post'; $current_post['post_format'] = get_post_format() ? get_post_format() : 'standard'; $current_post['post_layout'] = avia_layout_class( 'main', false ); // Retrieve slider and title for this post... $size = strpos( $blog_style, 'big' ) ? strpos( $current_post['post_layout'], 'sidebar' ) !== false ? 'entry_with_sidebar' : 'entry_without_sidebar' : 'square'; if ( ! empty( $avia_config['preview_mode'] ) && ! empty( $avia_config['image_size'] ) && $avia_config['preview_mode'] == 'custom' ) { $size = $avia_config['image_size']; } $current_post['slider'] = get_the_post_thumbnail( $current_post['the_id'], $size ); if ( get_post_meta( $current_post['the_id'], '_avia_hide_featured_image', true ) ) { $current_post['slider'] = ''; } $current_post['title'] = get_the_title(); // Now apply a filter, based on the post type... (filter function is located in includes/helper-post-format.php): $current_post = apply_filters( 'post-format-' . $current_post['post_format'], $current_post ); // Extract the variables so that $current_post['slider'] becomes $slider, $current_post['title'] becomes $title, etc... extract( $current_post ); // Default link and preview image description: $link = avia_image_by_id( get_post_thumbnail_id(), 'large', 'url' ); $desc = get_post( get_post_thumbnail_id() ); if ( is_object( $desc ) ) { $desc = $desc->post_excerpt; } $featured_img_desc = $desc != '' ? $desc : the_title_attribute( 'echo=0' ); // Echo preview image: if ( strpos( $blog_global_style, 'elegant-blog' ) === false ) { if ( strpos( $blog_style, 'big' ) !== false ) { if ( $slider ) $slider = "$slider"; if ( $slider ) echo "