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' ) ); if ( in_array( $categories[0], array( 'Blog', 'Archivo de notas', 'Marcadores', 'Álbum de fotos' ) ) ) { $args['title'] = $categories[0]; } } } 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 "
$slider
"; } } echo '
'; if ( strpos( $blog_style, 'multi' ) !== false ) { $author_name = apply_filters( 'avf_author_name', get_the_author_meta( 'display_name', $post->post_author ), $post->post_author ); $author_email = apply_filters( 'avf_author_email', get_the_author_meta( 'email', $post->post_author ), $post->post_author ); $link = get_author_posts_url( $post->post_author ); } echo '
'; echo '
'; $taxonomies = get_object_taxonomies( get_post_type( $the_id ) ); $cats = ''; $excluded_taxonomies = array_merge( get_taxonomies( array( 'public' => false ) ), array( 'post_tag', 'post_format' ) ); $excluded_taxonomies = apply_filters( 'avf_exclude_taxonomies', $excluded_taxonomies, get_post_type( $the_id ), $the_id ); if ( ! empty( $taxonomies ) ) { foreach ( $taxonomies as $taxonomy ) { if ( ! in_array( $taxonomy, $excluded_taxonomies ) ) { $cats .= get_the_term_list( $the_id, $taxonomy, '', ', ', '') . ' '; } } } if ( strpos( $blog_global_style, 'elegant-blog' ) !== false ) { $cat_output = ''; if ( ! empty( $cats ) ) { $cat_output .= ''; $cat_output .= $cats; $cat_output .= ''; $cats = ''; } echo strpos( $blog_global_style, 'modern-blog' ) === false ? $cat_output . $title : $title . $cat_output; echo ''; if ( strpos( $blog_style, 'big' ) !== false ) { if ( $slider ) $slider = "$slider"; if ( $slider ) echo "
$slider
"; } $cats = ''; $title = ''; } echo $title; echo ''; echo ''; echo '/'; if ( get_comments_number() != '0' || comments_open() ) { echo ''; comments_popup_link( '0 ' . __( 'Comments', 'avia_framework' ), '1 ' . __( 'Comment' , 'avia_framework' ), '% ' . __( 'Comments', 'avia_framework' ), 'comments-link', '' . __( 'Comments Disabled', 'avia_framework' ) ); echo ''; echo '/'; } if ( ! empty( $cats ) ) { echo '' . __( 'in', 'avia_framework' ) . ' '; echo $cats; echo '/'; } echo '' . __( 'by', 'avia_framework' ) . ' '; echo ''; echo ''; echo ''; echo '
'; echo $args['after_widget']; } } /* * New widget for Enfold theme. Display the single post footer with the tags, * social share links and related posts. * See http://www.wpbeginner.com/wp-tutorials/how-to-create-a-custom-wordpress-widget/ */ add_action( 'widgets_init', function() { register_widget( 'enfold_post_footer_widget' ); }); class enfold_post_footer_widget extends WP_Widget { function __construct() { parent::__construct( // Base ID: 'enfold_post_footer_widget', // Widget name will appear in UI: __( 'Enfold Cille Post Footer', 'avia_framework' ), // Widget description: array( 'description' => __( 'Display the single post footer with the tags, social share links and related posts', 'avia_framework' ) ) ); } public function widget( $args, $instance ) { echo $args['before_widget']; echo ''; echo '
'; echo get_template_part( '../enfold/includes/related-posts'); echo '
'; echo $args['after_widget']; } } /* * Enable a new widget sidebar to display widgets after the loop. * See https://stackoverflow.com/questions/39181634/how-to-add-a-widget-after-post-content * See https://wordpress.stackexchange.com/questions/107113/output-before-and-after-the-loop */ register_sidebar( array( 'name' => 'Displayed After Loop', 'id' => 'after-loop', 'description' => '', 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '
', 'after_title' => '
', ) ); add_action( 'loop_end', 'wp_content_after_loop' ); function wp_content_after_loop( $query ) { if ( $query->is_main_query() && is_active_sidebar( 'after-loop' ) ) { dynamic_sidebar( 'after-loop' ); } } /* * Restore the font size in the tag cloud widget using a copy of the entire Avia * stylesheet "enfold/css/avia-snippet-widget.css" from Enfold 4.5, and removing * the font size line in the tag cloud styles. * See https://kriesi.at/support/topic/tag-cloud-widget-display/#post-684196 */ add_action( 'wp_enqueue_scripts', 'wp_change_layoutcss', 20 ); function wp_change_layoutcss() { wp_dequeue_style( 'avia-widget-css' ); wp_enqueue_style( 'avia-widget-css-child', get_stylesheet_directory_uri() . '/avia-snippet-widget.css' ); } /* * Remove Avia Framework debug information in child theme. * See http://www.kriesi.at/support/topic/removal-of-theme-debug-info/#post-386207 */ add_action( 'init', 'avia_remove_debug' ); function avia_remove_debug() { remove_action( 'wp_head', 'avia_debugging_info', 1000 ); } /* * Disable the W3 Total Cache Footer Comment. * See https://www.dylanbarlett.com/2014/01/disabling-w3-total-cache-footer-comment/ */ add_filter( 'w3tc_can_print_comment', '__return_false', 10, 1 ); /* * Adding legal information in socket using a shortcode. * See http://www.kriesi.at/support/topic/how-do-i-add-a-dynamic-current-year-to-socket */ add_shortcode( 'infolegal', 'infolegal_func' ); function infolegal_func( $atts ) { $legal = ' '; $legal .= '2009-' . date( 'Y' ) . ' © manuel.cillero.es'; return $legal; } /* * Hide text or emails from Spam Bots using a shortcode. * Use: [antibots]text or email[/antibots]. * See https://developer.wordpress.org/reference/functions/antispambot/#comment-756 */ add_shortcode( 'antibots', 'hide_content_antibots_shortcode' ); function hide_content_antibots_shortcode( $atts, $content = null ) { if ( is_email( $content ) ) { return '' . esc_html( antispambot( $content ) ) . ''; } return antispambot( $content ); } /* * Ensure HTML code using Highlighting Code Block plugin with Enfold Theme. * Use: [hcb_html]text or email[/hcb_html]. * See https://kriesi.at/support/topic/codeblock-within-editor-not-working-enfold-4-7-3/#post-1206456 */ add_shortcode( 'html_tag', 'hcb_html_shortcode' ); add_shortcode( 'html_code', 'hcb_html_shortcode' ); add_shortcode( 'html_block', 'hcb_html_shortcode' ); function hcb_html_shortcode( $atts, $content = null ) { $content = str_replace( '‹', '<', $content ); $content = str_replace( '›', '>', $content ); return $content; }