Forum Replies Created
-
AuthorPosts
-
August 28, 2014 at 12:32 am in reply to: Services Widget on Home Page – Change length of quoted text #13337
David
MemberThank You! That works beautifully. I posted a mistake above where it says
<?php get_excerpt(); ?>
it should read
<?php echo get_excerpt(); ?>
Here is the code in my functions.php in it’s entirety.<?php /** *Function that trims excerpt by number of characters and ensures that the last word doesn't get cut off */ function get_excerpt(){ $excerpt = get_the_content(); $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); $excerpt = strip_shortcodes($excerpt); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, 360); $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt)); $excerpt = $excerpt = '<p>'.$excerpt.'... </p>'; return $excerpt; } /** * Widget for business layout that shows selected page content,title and featured image. Uses function above to control excerpt length by number of characters and not words * Construct the widget. * i.e. Name, description and control options. */ class interface_child_service_widget extends WP_Widget { function interface_child_service_widget() { $widget_ops = array( 'classname' => 'widget_service', 'description' => __( 'Display Services by no.of chars( Business Layout )', 'interface' ) ); $control_ops = array( 'width' => 200, 'height' =>250 ); parent::WP_Widget( false, $name = __( 'Theme Horse: Services Custom', 'interface' ), $widget_ops, $control_ops); } function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'number' => '8','page_id0'=>'','page_id1'=>'','page_id2'=>'','page_id3'=>'','page_id4'=>'','page_id5'=>'','page_id6'=>'','page_id7'=>'',)); $number = absint( $instance[ 'number' ] ); for ( $i=0; $i<$number; $i++ ) { $var = 'page_id'.$i; $defaults[$var] = ''; } ?> <p> <label for="<?php echo $this->get_field_id('number'); ?>"> <?php _e( 'Number of Services:', 'interface' ); ?> </label> <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /> </p> <?php for ( $i=0; $i<$number; $i++ ) { $var = 'page_id'.$i; $var = absint( $instance[ $var ] ); } ?> <?php for( $i=0; $i<$number; $i++) { ?> <p> <label for="<?php echo $this->get_field_id( key($defaults) ); ?>"> <?php _e( 'Page', 'interface' ); ?> :</label> <?php wp_dropdown_pages( array( 'show_option_none' =>' ','name' => $this->get_field_name( key($defaults) ), 'selected' => $instance[key($defaults)] ) ); ?> </p> <?php next( $defaults );// forwards the key of $defaults array } } function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['number'] = absint( $new_instance['number'] ); for( $i=0; $i<$instance['number']; $i++ ) { $var = 'page_id'.$i; $instance[ $var] = absint( $new_instance[ $var ] ); } return $instance; } function widget( $args, $instance ) { extract( $args ); extract( $instance ); $number = empty( $instance['number'] ) ? 8 : $instance['number']; global $post; global $interface_theme_setting_value; $options = $interface_theme_setting_value; $page_array = array(); for( $i=0; $i<$number ; $i++ ) { $var = 'page_id'.$i; $page_id = isset( $instance[ $var ] ) ? $instance[ $var ] : ''; if( !empty( $page_id ) ) array_push( $page_array, $page_id );// Push the page id in the array } $get_featured_pages = new WP_Query( array( 'posts_per_page' => -1, 'post_type' => array( 'page' ), 'post__in' => $page_array, 'orderby' => 'post__in' ) ); echo $before_widget; ?> <div class="column clearfix"> <?php $j = 1; while( $get_featured_pages->have_posts() ):$get_featured_pages->the_post(); $page_title = get_the_title(); if( $j % 4 == 3 && $j > 1 ) { $service_class = "one-fourth clearfix-half"; } elseif ( $j % 4 == 1 && $j > 1 ) { $service_class = "one-fourth clearfix-half clearfix-fourth"; } else { $service_class = "one-fourth"; } ?> <div class="<?php echo $service_class; ?>"> <div class="service-item clearfix"> <?php if ( has_post_thumbnail() ) { echo'<div class="service-icon">'.get_the_post_thumbnail( $post->ID, 'icon' ).'</div>'; } ?> <h3 class="service-title"><?php echo $page_title; ?></h3> </div> <!-- .service-item --> <article> <?php echo get_excerpt(); ?> </article> <?php if( !empty( $options[ 'post_excerpt_more_text' ] ) ) { ?> <a class="more-link" title="<?php the_title_attribute(); ?>" href="<?php the_permalink(); ?>"> <?php echo $options[ 'post_excerpt_more_text' ]; ?></a> <?php } ?> </div> <!-- .one-fourth --> <?php $j++; ?> <?php endwhile; // Reset Post Data wp_reset_query(); ?> </div> <!-- .column --> <?php echo $after_widget; } } function myplugin_register_widgets() { register_widget( 'interface_child_service_widget' ); } add_action( 'widgets_init', 'myplugin_register_widgets' ); /**************************************************************************************/ ?>
August 27, 2014 at 3:52 am in reply to: Services Widget on Home Page – Change length of quoted text #13314David
MemberOops , the post above should read functions.php – just to avoid confusion
August 27, 2014 at 1:38 am in reply to: Services Widget on Home Page – Change length of quoted text #13312David
MemberOk – I took a stab at this myself. Here is what I did if anyone else wants to do this…
first I made a function.php file in my child theme and added the following function
function get_excerpt(){ $excerpt = get_the_content(); $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); $excerpt = strip_shortcodes($excerpt); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, 140); $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt)); $excerpt = $excerpt = '<p>'.$excerpt.'... </p>'; return $excerpt; }
On 6th line you can change the 140 to however many characters you like.
Then on line 338 of inc/widgets/interface_widgets.php I changed the code to
<?php get_excerpt(); ?>
I tried making a copy of the file with the changes in my child theme but it won’t override the parent theme – therefore this change will be lost upon updating. Anyone got any thoughts on how to accomplish this without losing the changes on the next update?
August 26, 2014 at 2:05 am in reply to: Services Widget on Home Page – Change length of quoted text #13267David
MemberHi, Is there a way to change this to be controlled by the number of characters and not the number of words as they still end up with different heights as the words in the excerpts are different lengths. Or perhaps use <more> tags . The excerpts in your preview are all “Lorem Ipsum” and thus come out the same height. With real world text they come out with different lengths and thus heights…
-
AuthorPosts