Excerpt takes iframe code
-
Theme is calling the_excerpt function in Archive page and only takes text, not actual html. Please see cafoundationfund.org/projects
What do I need to do to add a function that allows the excerpt to take and accept html?
For example, the_excerpt() will output everything as text with restricted text limit, and the_content() function would show proper html.
The blog page seems to be doing ok: cafoundationfund.org/news
Please provide the PHP file, line and code to change.
-
Hello,
actually the grid layouts forces, as stated in a notice below the option
When you select the grid Layout, the post content is limited to the excerpt.
, and it doesn’t uses the_excerpt function butget_the_excerpt
function. There’s a filter applied to get_the_excerpt output which trims (and strips tags from) the excerpt, callbackwp_trim_excerpt
(inside of this callback the functionwp_trim_words
)`
So you shouldn’t see any iframe code at all, should be stripped, so I think some plugin is filtering get_the_excerpt output adding that code.. Dunno.
Anyway you want to display the content then, so, you might want to add something like that to your child-theme functions.php:add_filter('tc_grid_display_figcaption_content', 'my_grid_content'); function my_grid_content(){ $text = apply_filters( 'the_content', get_the_content() ); $text = str_replace(']]>', ']]>', $text); return sprintf('<div class="tc-g-cont">%s</div>', $text ); }
Thanks for the example. Would you have the exact code for this the Customizr theme? Adding this code snippet to the functions.php as is will create an error.
I am already running this on the functions.php
<?php
/**
* This is where you can copy and paste your functions !
*/add_filter(‘tc_slide_background’ , ‘set_video_slider’, 10, 4);
function set_video_slider($_original_bg , $link, $id, $s_name ) {
//////////////// Parameters : ////////////////
$my_slider_name = ‘video’;//set the name you have choosen when creating your slider
$slide_position = 2; //<= this will replace the first slide
$_video = ‘https://www.youtube.com/watch?v=T1qTKtsGpA4’;//<=the url of your vimeo or youtube video
$_autoplay = true;//<= true = autoplay
$_mute_volume = true;// true = volume set to 0
$_unmute_on_hover = true;//true = the video will unmute on mouse hover
$_pause_on_slide = true;//true = the video is paused on slide change
$_related_videos = false;// true = display related videos . Works just with youtube videos, vimeo doesn’t allow this for non premium users.
$_yt_loop = true;
//////////////////////////////////////////////
//uncomment this video array to run the random video
//$_video = array( ‘https://www.youtube.com/watch?v=oUlLeDKPCYA’ , ‘https://vimeo.com/108792063’, ‘https://vimeo.com/73373514’, ‘https://vimeo.com/39312923’, ‘https://vimeo.com/108104171’, ‘https://vimeo.com/106535324’ , ‘https://vimeo.com/108138933’, ‘https://vimeo.com/107789364’, ‘https://vimeo.com/107580451’ );$sliders = tc__f(‘__get_option’ , ‘tc_sliders’);
//remove previous filter if set
remove_filter(’embed_oembed_html’, ‘_add_an_id_for_youtube_player’ , 10, 4);
remove_filter(‘oembed_result’ , ‘enable_youtube_jsapi’);
remove_filter(‘oembed_result’ , ‘set_youtube_autoplay’);
remove_filter(‘oembed_fetch_url’ , ‘set_vimeo_url_query_args’);if ( $my_slider_name != $s_name )
return $_original_bg;$_slides = array();
foreach ($sliders[$s_name] as $_sid) {
$_slides[] = $_sid;
}
if ( $id != $_slides[$slide_position-1] )
return $_original_bg;if ( ! is_array($_video) ) {
$_return_video = $_video;
} else {
$rand_key = array_rand($_video, 1);
$_return_video = $_video[$rand_key];
}//youtube or vimeo?
$_provider = ( false !== strpos($_return_video, ‘youtube’) ) ? ‘youtube’ : false;
$_provider = ( false !== strpos($_return_video, ‘vimeo’) ) ? ‘vimeo’ : $_provider;if ( ! $_provider )
return $_original_bg;if ( ‘youtube’ == $_provider ) {
add_filter(’embed_oembed_html’, ‘_add_an_id_for_youtube_player’ , 10, 4);
//Adding parameters to WordPress oEmbed https://foxland.fi/adding-parameters-to-wordpress-oembed/
add_filter(‘oembed_result’ , ‘enable_youtube_jsapi’);
if ( false !== $_autoplay )
add_filter(‘oembed_result’ , ‘set_youtube_autoplay’);
if ( false !== $_yt_loop )
add_filter(‘oembed_result’ , ‘set_youtube_loop’);
if ( false === $_related_videos )
add_filter(‘oembed_result’ , ‘set_youtube_no_related_videos’);
} elseif ( ‘vimeo’ == $_provider && false !== $_autoplay ) {
add_filter(‘oembed_fetch_url’ , ‘set_vimeo_url_query_args’);
}//write some javascript : dynamic centering on resizing, responsiveness, Vimeo and YouTube API controls
_write_video_slide_script($id, $_mute_volume, $_unmute_on_hover, $_pause_on_slide, $_provider);
$_return_video = add_query_arg( ‘cached’ , time(), $_return_video );//( false !== strpos($_return_video, ‘?’) ) ? ‘&cached=’ : ‘?cached=’;
$_return_video = apply_filters(‘the_content’, $_return_video );/* For someone autombed is not hooked to the content */
if ( false === strpos($_return_video, ‘<iframe’) ){
global $wp_embed;
$_return_video = $wp_embed -> autoembed( $_return_video );
}return $_return_video;
}function set_vimeo_url_query_args($provider) {
$provider = add_query_arg( ‘autoplay’, 1 , $provider );
$provider = add_query_arg( ‘loop’, 1 , $provider );
return $provider;
}
function set_youtube_autoplay($html) {
if ( strstr( $html,’youtube.com/embed/’ ) )
return str_replace( ‘?feature=oembed’, ‘?feature=oembed&autoplay=1’, $html );
return $html;
}function set_youtube_loop($html) {
if ( strstr( $html,’youtube.com/embed/’ ) )
return preg_replace( ‘|(youtube.com/embed/)(.*?)(\?feature=oembed)|’, ‘$0&loop=1&playlist=$2’, $html );
return $html;
}function set_youtube_no_related_videos($html) {
if ( strstr( $html,’youtube.com/embed/’ ) )
return str_replace( ‘?feature=oembed’, ‘?feature=oembed&rel=0’, $html );
return $html;
}function _add_an_id_for_youtube_player($html, $url, $attr, $post_ID ) {
//@to do make the id unique
return str_replace(‘<iframe’, ‘<iframe id=”youtube-video”‘, $html);
}function enable_youtube_jsapi($html) {
if ( strstr( $html,’youtube.com/embed/’ ) )
return str_replace( ‘?feature=oembed’, ‘?feature=oembed&enablejsapi=1’, $html );
return $html;
}function _write_video_slide_script($id, $_mute_volume, $_unmute_on_hover, $_pause_on_slide, $_provider) {
?>
<script type=”text/javascript”>
jQuery(function ($) {
var $_slide_wrap = $(‘.slide-‘+<?php echo $id ?>),
$vid_iframe = $(‘iframe’ , $_slide_wrap ),
vid_height = $vid_iframe.attr(‘height’),
vid_width = $vid_iframe.attr(‘width’),
wind_width = $(window).width(),
is_active = false,
$slider_wrapper = $_slide_wrap.closest(‘div[id*=customizr-slider]’),
$_pause_on_slide = <?php echo (true != $_pause_on_slide) ? ‘false’ : ‘true’; ?>,
$_mute_volume = <?php echo (true != $_mute_volume) ? ‘false’ : ‘true’; ?>,
$_unmute_on_hover = <?php echo (true != $_unmute_on_hover) ? ‘false’ : ‘true’; ?>,
$_provider = ‘<?php echo $_provider; ?>’;//$(‘.carousel-caption’ , $_slide_wrap ).remove();
$(‘.carousel-image’, $_slide_wrap ).css(‘text-align’ , ‘center’);//Beautify the video
$(‘iframe’ , $_slide_wrap )
.attr(‘width’ , ”).attr(‘height’ , ”)
.css(‘width’, ‘100%’).css(‘max-width’, ‘100%’).css(‘position’,’relative’)
_re_center();
$(window).resize( function() {
setTimeout(function() { _re_center();}, 200)
});function _re_center() {
var new_height = (wind_width * vid_width) / vid_height,
_height = $slider_wrapper.height(),
push_up = (new_height – _height )/2;
$(‘iframe’ , $_slide_wrap ).css(‘height’ , new_height ).css(‘bottom’ , push_up );
}//VIMEO PLAYER API
//https://developer.vimeo.com/player/js-api
// Listen for messages from the player
if (window.addEventListener){
window.addEventListener(‘message’, onMessageReceived, false);
}
else {
window.attachEvent(‘onmessage’, onMessageReceived, false);
}// Helper function for sending a message to the player
function post(action, value, player) {
if ( ! player || 0 == player.length )
return;
var data = {
method: action
};if (value)
data.value = value;var message = JSON.stringify(data);
url = player.attr(‘src’).split(‘?’),
player[0].contentWindow.postMessage(message, url);
}//Mute volume when player is ready
function onMessageReceived(e) {
var data = JSON.parse(e.data),
$activeSlide = $slider_wrapper.find(‘.item.active’),
$player = $(‘iframe[src*=vimeo]’, $activeSlide );
switch (data.event) {
case ‘ready’:
( true == $_mute_volume) && post(‘setVolume’, +0.00001 , $player );
break;
}
}
//EVENTS :
//Unmute on hover
$_mute_volume && $_unmute_on_hover && $slider_wrapper.hover( function() {
post(‘setVolume’, +0.8 , $(‘iframe[src*=vimeo]’, $(this).find(‘.item.active’) ) );
}, function() {
post(‘setVolume’, +0.000001 , $(‘iframe[src*=vimeo]’, $(this).find(‘.item.active’) ) );
});// Call the API on ‘slid’
$slider_wrapper.on(‘slid’, function() {
( true == $_pause_on_slide) && _pause_inactive_slides();
});function _pause_inactive_slides() {
var $activeSlide = $slider_wrapper.find(‘.item.active’),
$player = $(‘iframe[src*=vimeo]’, $activeSlide );//if current slide has no player. Pause all other players, else play this player
if ( ! $player.length ) {
$slider_wrapper.find(‘iframe[src*=vimeo]’).each( function() {
post( ‘pause’, false , $(this) );
});
}
post( ‘play’, null, $player );
}//YOUTUBE PLAYER API
//https://developers.google.com/youtube/iframe_api_reference
//https://developers.google.com/youtube/player_parameters
//https://stackoverflow.com/questions/8869372/how-do-i-automatically-play-a-youtube-video-iframe-api-muted
//https://css-tricks.com/play-button-youtube-and-vimeo-api/if ( ‘youtube’ == $_provider ) {
var player;
//important : the function onYouTubeIframeAPIReady has to be added to the window object
//when wrapped in another closure
window.onYouTubeIframeAPIReady = function () {
player = new YT.Player(‘youtube-video’, {
events: {
‘onReady’: onPlayerReady
//’onStateChange’: onPlayerStateChange
}
});
}//Play and Mute volume when player is ready
function onPlayerReady() {
//player.playVideo();
_bind_youtube_events();if ( true == $_mute_volume)
player.mute();
else
player.unMute();
}function _bind_youtube_events() {
//Unmute on hover
if ( $_mute_volume && $_unmute_on_hover ){
$slider_wrapper.hover( function() {
if ( 0 != $(‘iframe[src*=youtube]’, $(this).find(‘.item.active’) ).length )
player.unMute();
}, function() {
if ( 0 != $(‘iframe[src*=youtube]’, $(this).find(‘.item.active’) ).length )
player.mute();
});
}// Call the API on ‘slid’
$slider_wrapper.on(‘slid’, function() {
if ( true !== $_pause_on_slide)
return;
var $activeSlide = $slider_wrapper.find(‘.item.active’),
$player = $(‘iframe[src*=youtube]’, $activeSlide );//if current slide has no player. Pause all other players, else play this player if it was in pause
if ( ! $player.length ) {
$slider_wrapper.find(‘iframe[src*=youtube]’).each( function() {
player.pauseVideo();
});
} else if ( 2 == player.getPlayerState() ){
player.playVideo();
}});//end on slid
};//end _bind_youtube_events//load the youtube API script asynchronously
var tag = document.createElement(‘script’);
tag.src = “https://www.youtube.com/player_api”;
var firstScriptTag = document.getElementsByTagName(‘script’)[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}});
</script>
<?php
}add_action(‘wp_footer’, ‘fp_titles_linkizr’, 200);
function fp_titles_linkizr(){
// limitate the js to the home page
if ( ! tc__f(‘__is_home’) )
return;
$widget_front = ( class_exists(‘TC_fpu’) || class_exists(‘TC_fpc’) ) ? “fpc-widget-front” : “widget-front”;
?>
<script type=”text/javascript”>
jQuery(document).ready(function () {
!function ($){
“use strict”;
// grab all links
var $a_hrefs = $(“.<?php echo $widget_front ?> a”),
$links = ( $a_hrefs.filter(“round-div”).length > 0 ) ? $a_hrefs.filter(“round-div”) : $a_hrefs.filter(“.fp-button”);
if ( $links.length == 0 )
return;// grab all fp-titles
var $titles = $(“.<?php echo $widget_front; ?> > :header”);$titles.each( function(i) {
var $edit_span = $(this).find(‘span’);
$edit_span.detach();
var _target = $( $links[i] ).attr(‘target’) == ‘blank’ ? ‘_blank’ : $( $links[i]).attr(‘target’),
target = _target ? ‘target=”‘+ _target + ‘”‘ : ”,
// let’s wrap the title into the round-div link
linkizd_title = ‘<a class=”fp-title-link” href=”‘ + $( $links[i] ).attr(‘href’) +'” ‘+ target +
‘ title=”‘ + $( $links[i] ).attr(‘title’) + ‘”>’ + $(this).text() + ”;
$(this).html(linkizd_title);
$(this).append($edit_span);
});
}(window.jQuery);
});
</script>
<?php
}add_filter(‘tc_credits_display’, ‘my_custom_credits’, 20);
function my_custom_credits(){
$credits = ”;
$newline_credits = ”;
return ‘
<div class=”span4 credits”>
<p> · © ‘.esc_attr( date( ‘Y’ ) ).’ ‘.esc_attr(get_bloginfo()).’ · ‘.($newline_credits ? ‘
· ‘.$newline_credits.’ ·’ : ”).'</p> </div>’;
}When I add this to the bottom:
<?php
add_filter(‘tc_grid_display_figcaption_content’, ‘my_grid_content’);
function my_grid_content(){$text = apply_filters( ‘the_content’, get_the_content() );
$text = str_replace(‘]]>’, ‘]]>’, $text);return sprintf(‘<div class=”tc-g-cont”>%s</div>’,
$text
);
}I get this:
Parse error: syntax error, unexpected ‘<‘ in /home/wp_phcans/cafoundationfund.org/wp-content/themes/customizr-child/functions.php on line 338
Got it to work. However I want the excerpt to work. The content is ugly. I will start a new string of posts. This was is confusing.
- The topic ‘Excerpt takes iframe code’ is closed to new replies.