manuel.cillero.es/enfold-cille/functions.php

647 lines
24 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
* Add your own functions here.
* You can also copy some of the theme functions into this file.
* Wordpress will use those functions instead of the original functions then.
*/
if ( !function_exists( 'write_log' ) ) {
function write_log( $log ) {
# if ( true === WP_DEBUG ) {
if ( is_array( $log ) || is_object( $log ) ) {
error_log( print_r( $log, true ), 3, '/tmp/manuel.cillero.errors.log' );
}
else {
error_log( "$log\n", 3, '/tmp/manuel.cillero.errors.log' );
}
# }
}
}
/*
* Force URLs in srcset attributes into HTTPS scheme.
* See http://wptavern.com/how-to-fix-images-not-loading-in-wordpress-4-4-while-using-ssl
*/
add_filter( 'wp_calculate_image_srcset', 'ssl_srcset' );
function ssl_srcset( $sources ) {
foreach ( $sources as &$source ) {
$source['url'] = set_url_scheme( $source['url'], 'https' );
}
return $sources;
}
/*
* Add EXIF data only in photoblog posts using a filter.
* See https://ithemes.com/2011/03/20/automatically-add-content-to-your-wordpress-posts-and-pages#Using_Filters
*/
add_filter( 'the_content', 'add_exif_data' );
function add_exif_data( $content ) {
if ( function_exists('exifography_display_exif') && is_single() && has_category( 976 ) ) {
$content .= exifography_display_exif();
}
return $content;
}
/*
* 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'] = 26; // Largest tag.
$args['smallest'] = 11; // Smallest tag.
$args['unit'] = 'px'; // Tag font unit.
return $args;
}
add_filter( 'wp_generate_tag_cloud', 'xf_tag_cloud', 10, 3 );
function xf_tag_cloud( $tag_string ) {
return preg_replace( "/style='font-size:.+px/", "$0 !important", $tag_string );
}
/*
* 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;
}
/*
* 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( 'avia_post_nav_settings', 'avia_same_category_filter', 10, 1 );
function avia_same_category_filter( $settings ) {
$settings['same_category'] = true;
return $settings;
}
/*
* By default the post single page title will be “Blog Latest News”. This
* function alter this title to reflect the post category instead.
* 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 ) {
if (is_single()) {
$post_type = get_post_type();
$category = get_the_category();
if ( ! empty( $category ) && $post_type == 'post' ) {
// Social title for Twitter, Facebook & LinkedIn categories:
$args['title'] = in_array( $category[0]->name, array( 'Twitter', 'Facebook', 'LinkedIn' ) ) ? 'Social' : $category[0]->name;
$args['link'] = NULL;
$args['heading'] = 'h1';
}
elseif ( $post_type == 'quote' ) {
$args['title'] = 'Libro de citas';
$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;
}
/*
* Add new class in Social, Twitter, Facebook & LinkedIn posts.
* See https://tommcfarlin.com/add-class-to-single-post/
*/
add_filter( 'post_class', 'add_social_class' );
function add_social_class( $classes ) {
$category = get_the_category();
if ( !empty( $category ) && in_array( $category[0]->term_id, array( 1561, 1562, 1563, 1564 ) ) ) {
$classes[] = 'post-entry-social';
}
return $classes;
}
/*
* Breadcrumb formatting for social and 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_single() ) {
$category = get_the_category();
if ( !empty( $category ) ) {
// Correct breadcrumb for Blog, Bloc de notas & Fotoblog single posts:
if ( in_array( $category[0]->term_id, array( 982, 978, 976 ) ) && strpos( $trail[1], 'social' ) ) {
switch ( $category[0]->term_id ) {
case 982: // Blog
array_splice( $trail, 1, 2, array( '<a href="/blog/category/blog">Blog</a>' ) );
break;
case 978: // Bloc de notas
array_splice( $trail, 1, 2, array( '<a href="/blog/category/notebook">Bloc de notas</a>' ) );
break;
case 976: // Fotoblog
array_splice( $trail, 1, 2, array( '<a href="/blog/category/photoblog">Fotoblog</a>' ) );
}
}
// Social breadcrumb for Twitter, Facebook & LinkedIn content:
elseif ( in_array( $category[0]->term_id, array( 1562, 1563, 1564 ) ) ) {
unset ( $trail[2] );
}
}
}
elseif ( is_tag() || is_category( array( 982, 978, 976 ) ) ) {
// Posts breadcrumb for Blog, Bloc de notas & Fotoblog categories:
array_splice( $trail, 1, 0, array( '<a href="/posts" title="Todas las entradas">Entradas</a>' ) );
}
return $trail;
}
/*
* Auto generate the post title if it's empty and post has content.
*/
add_filter( 'wp_insert_post_data', 'autogenerate_title', 1, 2 );
function autogenerate_title( $data, $postarr ) {
$title = preg_replace( '!\s+!', ' ', str_replace( '&nbsp;', ' ', $data['post_title'] ) );
$text_title = trim( strip_tags( $title ) );
if ( empty( $text_title ) ) {
$content = preg_replace( '!\s+!', ' ', str_replace( '&nbsp;', ' ', $data['post_content'] ) );
$text_content = trim( strip_tags( $content ) );
if ( ! empty( $text_content ) ) {
$content_words = explode( ' ', $text_content );
$text_title = implode( ' ', array_slice( $content_words, 0, 4 ) );
$data['post_title'] = count( $content_words ) > 4 ? "$text_title" : $text_title;
}
}
return $data;
}
/*
* Sharing content in social networks if required.
*/
add_action( 'save_post', 'share_post', 1, 2 );
function share_post( $post_id, $post ) {
// Count post categories:
$post_categories = get_the_category( $post_id );
$categories = array_values( array_column( $post_categories, 'name' ) );
$num_categories = count( $categories );
// Review post only for Social, Twitter, Facebook & LinkedIn categories:
$num_social_categories = count( array_intersect( array( 'Social', 'Twitter', 'Facebook', 'LinkedIn' ), $categories ) );
// Nothing to do if there aren't social categories:
if ( $num_social_categories > 0 ) {
// Get cleaned post title:
$title = preg_replace( '!\s+!', ' ', str_replace( '&nbsp;', ' ', $post->post_title ) );
$text_title = trim( strip_tags( $title ) );
if ( mb_strrpos( $text_title, ' …' ) == mb_strlen( $text_title ) - 2 ) {
$text_title = mb_substr( $text_title, 0, mb_strlen( $text_title ) - 2 );
}
// Get cleaned post content:
$content = preg_replace( '!\s+!', ' ', str_replace( '&nbsp;', ' ', $post->post_content ) );
$text_content = trim( strip_tags( $content ) );
// Adapting content for pure social posts:
if ( $num_categories == $num_social_categories ) {
$post_content = trim( strip_tags( $content, '<p><a><strong><b><em><i><br />' ) );
/*
Remove html attributes except for anchor tag:
/ Start Pattern
< Match '<' at beginning of tags
( Start Capture Group $1 - Tag Name
[a-z] Match 'a' through 'z'
[a-z0-9]+ Match 'a' through 'z' or '0' through '9' one or more times
) End Capture Group
[^>]*? Match anything other than '>', Zero or More times, not-greedy (wont eat the /)
(\/?) Capture Group $2 - '/' if it is there
> Match '>'
/i End Pattern - Case Insensitive
*/
$post_content = preg_replace( "/<([a-z][a-z0-9]+)[^>]*?(\/?)>/i", '<$1$2>', $post_content );
$post->post_content = str_replace( array( '<b>', '</b>', '<i>', '</i>' ), array( '<strong>', '</strong>', '<em>', '</em>' ), $post_content );
}
// Preparing post excerpt for Twitter:
$text_excerpt = $text_content;
if ( mb_strpos( $text_content, $text_title ) !== 0 ) {
$post_excerpt = $text_title;
$post_excerpt .= empty( $text_content ) ? '.' : ". $text_content";
}
$post_excerpt = html_entity_decode( $text_excerpt );
$limit = has_post_thumbnail( $post ) ? 280 - 25 : 280;
if ( mb_strlen( $post_excerpt ) > $limit ) {
preg_match_all( '#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $post_excerpt, $matches );
for ( $i = 0; $i < count( $matches[0] ); $i++ ) {
$post_excerpt = str_replace( $matches[0][$i], shorten_url( $matches[0][$i] ), $post_excerpt );
}
if ( mb_strlen( $post_excerpt ) > $limit ) {
$post_excerpt = mb_substr( $post_excerpt, 0, $limit - 25 );
$post_excerpt = mb_substr( $post_excerpt, 0, mb_strrpos( $post_excerpt, ' ' ) ) . '… ';
$permalink = get_permalink( $post );
$post_excerpt .= ( mb_strlen( $post_excerpt ) + mb_strlen( $permalink ) ) <= $limit ? $permalink : shorten_url( $permalink );
}
}
$post->post_excerpt = $post_excerpt;
// Unhook this function so it doesn't loop infinitely:
remove_action( 'save_post', 'share_post', 1, 2 );
// Update the post, which calls save_post again:
wp_update_post( $post );
// Re-hook this function:
add_action( 'save_post', 'share_post', 1, 2 );
}
}
function shorten_url( $long_url ) {
$bitly_login = 'o_7sko9rcpp7';
$bitly_apikey = 'R_f414bf78d22443c6a6bad3c58921fd96';
$bitly_shorten = "http://api.bit.ly/v3/shorten?login=" . $bitly_login . "&apiKey=" . $bitly_apikey . "&longUrl=" . $long_url . "&format=json";
return json_decode( file_get_contents( $bitly_shorten ) )->data->url;
}
/*
* 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 '
<script>
jQuery(document).ready(function(){
var urls_regexp = new RegExp(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi);
function htmlDecode(input){
input = input.replace(/(<[a-zA-Z\/][^<>]*>|\[([^\]]+)\])/ig,"");
// https://stackoverflow.com/a/34064434
var doc = new DOMParser().parseFromString(input, "text/html");
return doc.documentElement.textContent;
}
function get_content_length(){
var title_length = htmlDecode(jQuery("#title").val()).length;
var content = "";
// Are we using visual editor?
if ((typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden()){
content = htmlDecode(tinyMCE.activeEditor.getContent());
}
// Or html editor?
else {
content = htmlDecode(jQuery("#content").val());
}
var content_length = content.length;
var tuit_length = content_length;
var urls = content.match(urls_regexp);
if (urls) for (i = 0; i < urls.length; i++) tuit_length = tuit_length - urls[i].length + 23;
var return_text = "El título tiene " + title_length.toString() + " caracteres.";
return_text += " Y el contenido " + content_length.toString();
return_text += content_length != tuit_length ? " (" + tuit_length.toString() + " en Twitter)." : ".";
return return_text;
}
jQuery("#wp-content-media-buttons").after("<button id=\"content-counter\" class=\"button\" title=\"Número de caracteres\" href=\"javascript:;\"><strong>#</strong></button>");
jQuery("#content-counter").click(function(e){ alert(get_content_length()); e.preventDefault(); });
function get_excerpt_length(){
var excerpt_length = jQuery("#excerpt").val().length;
var tuit_length = excerpt_length;
var urls = jQuery("#excerpt").val().match(urls_regexp);
if (urls) for (i = 0; i < urls.length; i++) tuit_length = tuit_length - urls[i].length + 23;
tuit_length = 280 - tuit_length;
return excerpt_length.toString() + " / " + tuit_length.toString() + " (Twitter)";
}
jQuery("#postexcerpt .handlediv").after("<div style=\"position:absolute;top:12px;right:34px;color:#666;\"><span id=\"excerpt_counter\"></span></div>");
jQuery("span#excerpt_counter").text(get_excerpt_length());
jQuery("#excerpt").keyup(function(){ jQuery("span#excerpt_counter").text(get_excerpt_length()); });
});
</script>';
}
}
/*
* Ensure that AccessPress Social Auto Post works in all cases.
*
add_action( 'publish_post', 'publish_social_post', 10, 2 );
function publish_social_post( $ID, $post ) {
$auto_post = $_POST['asap_auto_post'];
if ( $auto_post == 'yes' || $auto_post == '' ) {
$plugin_asap_dir = ABSPATH . 'wp-content/plugins/accesspress-social-auto-post/';
// Only Facebook and LinkedIn:
include_once( $plugin_asap_dir . 'api/facebook/facebook.php' );
# include_once( $plugin_asap_dir . 'api/twitter/codebird.php' );
# include_once( $plugin_asap_dir . 'api/tumblr/TumblrAPIClient.php' );
include_once( $plugin_asap_dir . 'api/linkedin/liOAuth.php' );
include( $plugin_asap_dir . 'inc/cores/auto-post.php' );
$check = update_post_meta( $post->ID, 'asap_auto_post', 'no' );
$_POST['asap_auto_post'] = 'no';
}
} */
/*
* 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 = "<a href=\"$link\" title=\"$featured_img_desc\">$slider</a>";
if ( $slider ) echo "<div class=\"big-preview $blog_style\">$slider</div>";
}
}
echo '<div class="blog-meta">';
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 '</div>';
echo '<header class="entry-content-header">';
$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 .= '<span class="blog-categories minor-meta">';
$cat_output .= $cats;
$cat_output .= '</span>';
$cats = '';
}
echo strpos( $blog_global_style, 'modern-blog' ) === false ? $cat_output . $title : $title . $cat_output;
echo '<span class="av-vertical-delimiter"></span>';
if ( strpos( $blog_style, 'big' ) !== false ) {
if ( $slider ) $slider = "<a href=\"$link\" title=\"$featured_img_desc\">$slider</a>";
if ( $slider ) echo "<div class=\"big-preview $blog_style\">$slider</div>";
}
$cats = '';
$title = '';
}
echo $title;
echo '<span class="post-meta-infos">';
echo '<time class="date-container minor-meta updated">' . get_the_time( get_option( 'date_format' ) ) . '</time>';
echo '<span class="text-sep text-sep-date">/</span>';
if ( get_comments_number() != '0' || comments_open() ) {
echo '<span class="comment-container minor-meta">';
comments_popup_link( '0 ' . __( 'Comments', 'avia_framework' ),
'1 ' . __( 'Comment' , 'avia_framework' ),
'% ' . __( 'Comments', 'avia_framework' ), 'comments-link',
'' . __( 'Comments Disabled', 'avia_framework' ) );
echo '</span>';
echo '<span class="text-sep text-sep-comment">/</span>';
}
if ( ! empty( $cats ) ) {
echo '<span class="blog-categories minor-meta">' . __( 'in', 'avia_framework' ) . ' ';
echo $cats;
echo '</span><span class="text-sep text-sep-cat">/</span>';
}
echo '<span class="blog-author minor-meta">' . __( 'by', 'avia_framework' ) . ' ';
echo '<span class="entry-author-link">';
echo '<span class="vcard author"><span class="fn">';
the_author_posts_link();
echo '</span></span>';
echo '</span>';
echo '</span>';
echo '</span>';
echo '</header>';
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 '<footer class="entry-footer">';
if ( has_tag() ) {
echo '<span class="blog-tags minor-meta">';
echo the_tags( '<strong>' . __( 'Tags:', 'avia_framework' ) . '</strong><span> ' );
echo '</span></span>';
}
avia_social_share_links();
echo '</footer>';
echo '<div style="margin-top: 172px;">';
echo get_template_part( '../enfold/includes/related-posts');
echo '</div>';
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' => '<h2>',
'after_title' => '</h2>',
) );
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 = '<div id="legal">';
$legal .= '<span class="legal-notice"><a href="/legal">Aviso legal</a></span>';
$legal .= '<span class="legal-privacy"> &nbsp;|&nbsp; <a href="/legal/politica-de-privacidad">Política de privacidad</a></span>';
$legal .= '<span class="legal-cookies"> &nbsp;|&nbsp; <a href="/legal/politica-de-cookies">Uso de cookies</a></span>';
$legal .= '<span class="legal-terms"> &nbsp;|&nbsp; <a href="/legal/terminos-de-uso">Términos de uso</a></span>';
$legal .= '</div> ';
$legal .= '2009-' . date( 'Y' ) . ' &copy; manuel.cillero.es';
return $legal;
}