Change Panel Image Size Wordpress 2017 Theme - php
I have a wordpress site using the 2017 Theme that has sections where you can embed one of your other pages. The Header Image size for my Blog page is HUGE, but when I go to the Blog page it is truncated by the theme to a nice banner. So on the home page section, you have to scroll through the huge image.
I'd like to show the truncated size in the section on the home page. How do I (I assume) modify the theme to do this?
When I inspect the element, it is
<div class="panel-image" style="background-image: url(image_url);">
<div class="panel-image-prop" style="padding-top: 100%"></div>
</div>
FYI, the theme Functions.php is below.
<?php
/**
* Twenty Seventeen functions and definitions
*
* #link https://developer.wordpress.org/themes/basics/theme-functions/
*
* #package WordPress
* #subpackage Twenty_Seventeen
* #since 1.0
*/
/**
* Twenty Seventeen only works in WordPress 4.7 or later.
*/
if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '<' ) ) {
require get_template_directory() . '/inc/back-compat.php';
return;
}
/**
* Sets up theme defaults and registers support for various WordPress features.
*
* Note that this function is hooked into the after_setup_theme hook, which
* runs before the init hook. The init hook is too late for some features, such
* as indicating support for post thumbnails.
*/
function twentyseventeen_setup() {
/*
* Make theme available for translation.
* Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentyseventeen
* If you're building a theme based on Twenty Seventeen, use a find and replace
* to change 'twentyseventeen' to the name of your theme in all the template files.
*/
load_theme_textdomain( 'twentyseventeen' );
// Add default posts and comments RSS feed links to head.
add_theme_support( 'automatic-feed-links' );
/*
* Let WordPress manage the document title.
* By adding theme support, we declare that this theme does not use a
* hard-coded <title> tag in the document head, and expect WordPress to
* provide it for us.
*/
add_theme_support( 'title-tag' );
/*
* Enable support for Post Thumbnails on posts and pages.
*
* #link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
*/
add_theme_support( 'post-thumbnails' );
add_image_size( 'twentyseventeen-featured-image', 2000, 1200, true );
add_image_size( 'twentyseventeen-thumbnail-avatar', 100, 100, true );
// Set the default content width.
$GLOBALS['content_width'] = 525;
// This theme uses wp_nav_menu() in two locations.
register_nav_menus(
array(
'top' => __( 'Top Menu', 'twentyseventeen' ),
'social' => __( 'Social Links Menu', 'twentyseventeen' ),
)
);
/*
* Switch default core markup for search form, comment form, and comments
* to output valid HTML5.
*/
add_theme_support(
'html5',
array(
'comment-form',
'comment-list',
'gallery',
'caption',
)
);
/*
* Enable support for Post Formats.
*
* See: https://codex.wordpress.org/Post_Formats
*/
add_theme_support(
'post-formats',
array(
'aside',
'image',
'video',
'quote',
'link',
'gallery',
'audio',
)
);
// Add theme support for Custom Logo.
add_theme_support(
'custom-logo',
array(
'width' => 250,
'height' => 250,
'flex-width' => true,
)
);
// Add theme support for selective refresh for widgets.
add_theme_support( 'customize-selective-refresh-widgets' );
/*
* This theme styles the visual editor to resemble the theme style,
* specifically font, colors, and column width.
*/
add_editor_style( array( 'assets/css/editor-style.css', twentyseventeen_fonts_url() ) );
// Load regular editor styles into the new block-based editor.
add_theme_support( 'editor-styles' );
// Load default block styles.
add_theme_support( 'wp-block-styles' );
// Add support for responsive embeds.
add_theme_support( 'responsive-embeds' );
// Define and register starter content to showcase the theme on new sites.
$starter_content = array(
'widgets' => array(
// Place three core-defined widgets in the sidebar area.
'sidebar-1' => array(
'text_business_info',
'search',
'text_about',
),
// Add the core-defined business info widget to the footer 1 area.
'sidebar-2' => array(
'text_business_info',
),
// Put two core-defined widgets in the footer 2 area.
'sidebar-3' => array(
'text_about',
'search',
),
),
// Specify the core-defined pages to create and add custom thumbnails to some of them.
'posts' => array(
'home',
'about' => array(
'thumbnail' => '{{image-sandwich}}',
),
'contact' => array(
'thumbnail' => '{{image-espresso}}',
),
'blog' => array(
'thumbnail' => '{{image-coffee}}',
),
'homepage-section' => array(
'thumbnail' => '{{image-espresso}}',
),
),
// Create the custom image attachments used as post thumbnails for pages.
'attachments' => array(
'image-espresso' => array(
'post_title' => _x( 'Espresso', 'Theme starter content', 'twentyseventeen' ),
'file' => 'assets/images/espresso.jpg', // URL relative to the template directory.
),
'image-sandwich' => array(
'post_title' => _x( 'Sandwich', 'Theme starter content', 'twentyseventeen' ),
'file' => 'assets/images/sandwich.jpg',
),
'image-coffee' => array(
'post_title' => _x( 'Coffee', 'Theme starter content', 'twentyseventeen' ),
'file' => 'assets/images/coffee.jpg',
),
),
// Default to a static front page and assign the front and posts pages.
'options' => array(
'show_on_front' => 'page',
'page_on_front' => '{{home}}',
'page_for_posts' => '{{blog}}',
),
// Set the front page section theme mods to the IDs of the core-registered pages.
'theme_mods' => array(
'panel_1' => '{{homepage-section}}',
'panel_2' => '{{about}}',
'panel_3' => '{{blog}}',
'panel_4' => '{{contact}}',
),
// Set up nav menus for each of the two areas registered in the theme.
'nav_menus' => array(
// Assign a menu to the "top" location.
'top' => array(
'name' => __( 'Top Menu', 'twentyseventeen' ),
'items' => array(
'link_home', // Note that the core "home" page is actually a link in case a static front page is not used.
'page_about',
'page_blog',
'page_contact',
),
),
// Assign a menu to the "social" location.
'social' => array(
'name' => __( 'Social Links Menu', 'twentyseventeen' ),
'items' => array(
'link_yelp',
'link_facebook',
'link_twitter',
'link_instagram',
'link_email',
),
),
),
);
/**
* Filters Twenty Seventeen array of starter content.
*
* #since Twenty Seventeen 1.1
*
* #param array $starter_content Array of starter content.
*/
$starter_content = apply_filters( 'twentyseventeen_starter_content', $starter_content );
add_theme_support( 'starter-content', $starter_content );
}
add_action( 'after_setup_theme', 'twentyseventeen_setup' );
/**
* Set the content width in pixels, based on the theme's design and stylesheet.
*
* Priority 0 to make it available to lower priority callbacks.
*
* #global int $content_width
*/
function twentyseventeen_content_width() {
$content_width = $GLOBALS['content_width'];
// Get layout.
$page_layout = get_theme_mod( 'page_layout' );
// Check if layout is one column.
if ( 'one-column' === $page_layout ) {
if ( twentyseventeen_is_frontpage() ) {
$content_width = 644;
} elseif ( is_page() ) {
$content_width = 740;
}
}
// Check if is single post and there is no sidebar.
if ( is_single() && ! is_active_sidebar( 'sidebar-1' ) ) {
$content_width = 740;
}
/**
* Filter Twenty Seventeen content width of the theme.
*
* #since Twenty Seventeen 1.0
*
* #param int $content_width Content width in pixels.
*/
$GLOBALS['content_width'] = apply_filters( 'twentyseventeen_content_width', $content_width );
}
add_action( 'template_redirect', 'twentyseventeen_content_width', 0 );
/**
* Register custom fonts.
*/
function twentyseventeen_fonts_url() {
$fonts_url = '';
/*
* Translators: If there are characters in your language that are not
* supported by Libre Franklin, translate this to 'off'. Do not translate
* into your own language.
*/
$libre_franklin = _x( 'on', 'Libre Franklin font: on or off', 'twentyseventeen' );
if ( 'off' !== $libre_franklin ) {
$font_families = array();
$font_families[] = 'Libre Franklin:300,300i,400,400i,600,600i,800,800i';
$query_args = array(
'family' => urlencode( implode( '|', $font_families ) ),
'subset' => urlencode( 'latin,latin-ext' ),
);
$fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' );
}
return esc_url_raw( $fonts_url );
}
/**
* Add preconnect for Google Fonts.
*
* #since Twenty Seventeen 1.0
*
* #param array $urls URLs to print for resource hints.
* #param string $relation_type The relation type the URLs are printed.
* #return array $urls URLs to print for resource hints.
*/
function twentyseventeen_resource_hints( $urls, $relation_type ) {
if ( wp_style_is( 'twentyseventeen-fonts', 'queue' ) && 'preconnect' === $relation_type ) {
$urls[] = array(
'href' => 'https://fonts.gstatic.com',
'crossorigin',
);
}
return $urls;
}
add_filter( 'wp_resource_hints', 'twentyseventeen_resource_hints', 10, 2 );
/**
* Register widget area.
*
* #link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
*/
function twentyseventeen_widgets_init() {
register_sidebar(
array(
'name' => __( 'Blog Sidebar', 'twentyseventeen' ),
'id' => 'sidebar-1',
'description' => __( 'Add widgets here to appear in your sidebar on blog posts and archive pages.', 'twentyseventeen' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
)
);
register_sidebar(
array(
'name' => __( 'Footer 1', 'twentyseventeen' ),
'id' => 'sidebar-2',
'description' => __( 'Add widgets here to appear in your footer.', 'twentyseventeen' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
)
);
register_sidebar(
array(
'name' => __( 'Footer 2', 'twentyseventeen' ),
'id' => 'sidebar-3',
'description' => __( 'Add widgets here to appear in your footer.', 'twentyseventeen' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
)
);
}
add_action( 'widgets_init', 'twentyseventeen_widgets_init' );
/**
* Replaces "[...]" (appended to automatically generated excerpts) with ... and
* a 'Continue reading' link.
*
* #since Twenty Seventeen 1.0
*
* #param string $link Link to single post/page.
* #return string 'Continue reading' link prepended with an ellipsis.
*/
function twentyseventeen_excerpt_more( $link ) {
if ( is_admin() ) {
return $link;
}
$link = sprintf(
'<p class="link-more">%2$s</p>',
esc_url( get_permalink( get_the_ID() ) ),
/* translators: %s: Name of current post */
sprintf( __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ), get_the_title( get_the_ID() ) )
);
return ' … ' . $link;
}
add_filter( 'excerpt_more', 'twentyseventeen_excerpt_more' );
/**
* Handles JavaScript detection.
*
* Adds a `js` class to the root `<html>` element when JavaScript is detected.
*
* #since Twenty Seventeen 1.0
*/
function twentyseventeen_javascript_detection() {
echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n";
}
add_action( 'wp_head', 'twentyseventeen_javascript_detection', 0 );
/**
* Add a pingback url auto-discovery header for singularly identifiable articles.
*/
function twentyseventeen_pingback_header() {
if ( is_singular() && pings_open() ) {
printf( '<link rel="pingback" href="%s">' . "\n", esc_url( get_bloginfo( 'pingback_url' ) ) );
}
}
add_action( 'wp_head', 'twentyseventeen_pingback_header' );
/**
* Display custom color CSS.
*/
function twentyseventeen_colors_css_wrap() {
if ( 'custom' !== get_theme_mod( 'colorscheme' ) && ! is_customize_preview() ) {
return;
}
require_once( get_parent_theme_file_path( '/inc/color-patterns.php' ) );
$hue = absint( get_theme_mod( 'colorscheme_hue', 250 ) );
$customize_preview_data_hue = '';
if ( is_customize_preview() ) {
$customize_preview_data_hue = 'data-hue="' . $hue . '"';
}
?>
<style type="text/css" id="custom-theme-colors" <?php echo $customize_preview_data_hue; ?>>
<?php echo twentyseventeen_custom_colors_css(); ?>
</style>
<?php
}
add_action( 'wp_head', 'twentyseventeen_colors_css_wrap' );
/**
* Enqueues scripts and styles.
*/
function twentyseventeen_scripts() {
// Add custom fonts, used in the main stylesheet.
wp_enqueue_style( 'twentyseventeen-fonts', twentyseventeen_fonts_url(), array(), null );
// Theme stylesheet.
wp_enqueue_style( 'twentyseventeen-style', get_stylesheet_uri() );
// Theme block stylesheet.
wp_enqueue_style( 'twentyseventeen-block-style', get_theme_file_uri( '/assets/css/blocks.css' ), array( 'twentyseventeen-style' ), '1.1' );
// Load the dark colorscheme.
if ( 'dark' === get_theme_mod( 'colorscheme', 'light' ) || is_customize_preview() ) {
wp_enqueue_style( 'twentyseventeen-colors-dark', get_theme_file_uri( '/assets/css/colors-dark.css' ), array( 'twentyseventeen-style' ), '1.0' );
}
// Load the Internet Explorer 9 specific stylesheet, to fix display issues in the Customizer.
if ( is_customize_preview() ) {
wp_enqueue_style( 'twentyseventeen-ie9', get_theme_file_uri( '/assets/css/ie9.css' ), array( 'twentyseventeen-style' ), '1.0' );
wp_style_add_data( 'twentyseventeen-ie9', 'conditional', 'IE 9' );
}
// Load the Internet Explorer 8 specific stylesheet.
wp_enqueue_style( 'twentyseventeen-ie8', get_theme_file_uri( '/assets/css/ie8.css' ), array( 'twentyseventeen-style' ), '1.0' );
wp_style_add_data( 'twentyseventeen-ie8', 'conditional', 'lt IE 9' );
// Load the html5 shiv.
wp_enqueue_script( 'html5', get_theme_file_uri( '/assets/js/html5.js' ), array(), '3.7.3' );
wp_script_add_data( 'html5', 'conditional', 'lt IE 9' );
wp_enqueue_script( 'twentyseventeen-skip-link-focus-fix', get_theme_file_uri( '/assets/js/skip-link-focus-fix.js' ), array(), '1.0', true );
$twentyseventeen_l10n = array(
'quote' => twentyseventeen_get_svg( array( 'icon' => 'quote-right' ) ),
);
if ( has_nav_menu( 'top' ) ) {
wp_enqueue_script( 'twentyseventeen-navigation', get_theme_file_uri( '/assets/js/navigation.js' ), array( 'jquery' ), '1.0', true );
$twentyseventeen_l10n['expand'] = __( 'Expand child menu', 'twentyseventeen' );
$twentyseventeen_l10n['collapse'] = __( 'Collapse child menu', 'twentyseventeen' );
$twentyseventeen_l10n['icon'] = twentyseventeen_get_svg(
array(
'icon' => 'angle-down',
'fallback' => true,
)
);
}
wp_enqueue_script( 'twentyseventeen-global', get_theme_file_uri( '/assets/js/global.js' ), array( 'jquery' ), '1.0', true );
wp_enqueue_script( 'jquery-scrollto', get_theme_file_uri( '/assets/js/jquery.scrollTo.js' ), array( 'jquery' ), '2.1.2', true );
wp_localize_script( 'twentyseventeen-skip-link-focus-fix', 'twentyseventeenScreenReaderText', $twentyseventeen_l10n );
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'twentyseventeen_scripts' );
/**
* Enqueues styles for the block-based editor.
*
* #since Twenty Seventeen 1.8
*/
function twentyseventeen_block_editor_styles() {
// Block styles.
wp_enqueue_style( 'twentyseventeen-block-editor-style', get_theme_file_uri( '/assets/css/editor-blocks.css' ), array(), '1.1' );
// Add custom fonts.
wp_enqueue_style( 'twentyseventeen-fonts', twentyseventeen_fonts_url(), array(), null );
}
add_action( 'enqueue_block_editor_assets', 'twentyseventeen_block_editor_styles' );
/**
* Add custom image sizes attribute to enhance responsive image functionality
* for content images.
*
* #since Twenty Seventeen 1.0
*
* #param string $sizes A source size value for use in a 'sizes' attribute.
* #param array $size Image size. Accepts an array of width and height
* values in pixels (in that order).
* #return string A source size value for use in a content image 'sizes' attribute.
*/
function twentyseventeen_content_image_sizes_attr( $sizes, $size ) {
$width = $size[0];
if ( 740 <= $width ) {
$sizes = '(max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px';
}
if ( is_active_sidebar( 'sidebar-1' ) || is_archive() || is_search() || is_home() || is_page() ) {
if ( ! ( is_page() && 'one-column' === get_theme_mod( 'page_options' ) ) && 767 <= $width ) {
$sizes = '(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px';
}
}
return $sizes;
}
add_filter( 'wp_calculate_image_sizes', 'twentyseventeen_content_image_sizes_attr', 10, 2 );
/**
* Filter the `sizes` value in the header image markup.
*
* #since Twenty Seventeen 1.0
*
* #param string $html The HTML image tag markup being filtered.
* #param object $header The custom header object returned by 'get_custom_header()'.
* #param array $attr Array of the attributes for the image tag.
* #return string The filtered header image HTML.
*/
function twentyseventeen_header_image_tag( $html, $header, $attr ) {
if ( isset( $attr['sizes'] ) ) {
$html = str_replace( $attr['sizes'], '100vw', $html );
}
return $html;
}
add_filter( 'get_header_image_tag', 'twentyseventeen_header_image_tag', 10, 3 );
/**
* Add custom image sizes attribute to enhance responsive image functionality
* for post thumbnails.
*
* #since Twenty Seventeen 1.0
*
* #param array $attr Attributes for the image markup.
* #param int $attachment Image attachment ID.
* #param array $size Registered image size or flat array of height and width dimensions.
* #return array The filtered attributes for the image markup.
*/
function twentyseventeen_post_thumbnail_sizes_attr( $attr, $attachment, $size ) {
if ( is_archive() || is_search() || is_home() ) {
$attr['sizes'] = '(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px';
} else {
$attr['sizes'] = '100vw';
}
return $attr;
}
add_filter( 'wp_get_attachment_image_attributes', 'twentyseventeen_post_thumbnail_sizes_attr', 10, 3 );
/**
* Use front-page.php when Front page displays is set to a static page.
*
* #since Twenty Seventeen 1.0
*
* #param string $template front-page.php.
*
* #return string The template to be used: blank if is_home() is true (defaults to index.php), else $template.
*/
function twentyseventeen_front_page_template( $template ) {
return is_home() ? '' : $template;
}
add_filter( 'frontpage_template', 'twentyseventeen_front_page_template' );
/**
* Modifies tag cloud widget arguments to display all tags in the same font size
* and use list format for better accessibility.
*
* #since Twenty Seventeen 1.4
*
* #param array $args Arguments for tag cloud widget.
* #return array The filtered arguments for tag cloud widget.
*/
function twentyseventeen_widget_tag_cloud_args( $args ) {
$args['largest'] = 1;
$args['smallest'] = 1;
$args['unit'] = 'em';
$args['format'] = 'list';
return $args;
}
add_filter( 'widget_tag_cloud_args', 'twentyseventeen_widget_tag_cloud_args' );
/**
* Get unique ID.
*
* This is a PHP implementation of Underscore's uniqueId method. A static variable
* contains an integer that is incremented with each call. This number is returned
* with the optional prefix. As such the returned value is not universally unique,
* but it is unique across the life of the PHP process.
*
* #since Twenty Seventeen 2.0
* #see wp_unique_id() Themes requiring WordPress 5.0.3 and greater should use this instead.
*
* #staticvar int $id_counter
*
* #param string $prefix Prefix for the returned ID.
* #return string Unique ID.
*/
function twentyseventeen_unique_id( $prefix = '' ) {
static $id_counter = 0;
if ( function_exists( 'wp_unique_id' ) ) {
return wp_unique_id( $prefix );
}
return $prefix . (string) ++$id_counter;
}
/**
* Implement the Custom Header feature.
*/
require get_parent_theme_file_path( '/inc/custom-header.php' );
/**
* Custom template tags for this theme.
*/
require get_parent_theme_file_path( '/inc/template-tags.php' );
/**
* Additional features to allow styling of the templates.
*/
require get_parent_theme_file_path( '/inc/template-functions.php' );
/**
* Customizer additions.
*/
require get_parent_theme_file_path( '/inc/customizer.php' );
/**
* SVG icons functions and filters.
*/
require get_parent_theme_file_path( '/inc/icon-functions.php' );
Maybe this is more useful, panel template php:
<?php
/**
* Template part for displaying pages on front page
*
* #package WordPress
* #subpackage Twenty_Seventeen
* #since 1.0
* #version 1.0
*/
global $twentyseventeencounter;
?>
<article id="panel<?php echo $twentyseventeencounter; ?>" <?php post_class( 'twentyseventeen-panel ' ); ?> >
<?php
if ( has_post_thumbnail() ) :
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'twentyseventeen-featured-image' );
// Calculate aspect ratio: h / w * 100%.
$ratio = $thumbnail[2] / $thumbnail[1] * 100;
?>
<div class="panel-image" style="background-image: url(<?php echo esc_url( $thumbnail[0] ); ?>);">
<div class="panel-image-prop" style="padding-top: <?php echo esc_attr( $ratio ); ?>%"></div>
</div><!-- .panel-image -->
<?php endif; ?>
<div class="panel-content">
<div class="wrap">
<header class="entry-header">
<?php the_title( '<h2 class="entry-title">', '</h2>' ); ?>
<?php twentyseventeen_edit_link( get_the_ID() ); ?>
</header><!-- .entry-header -->
<div class="entry-content">
<?php
/* translators: %s: Name of current post */
the_content(
sprintf(
__( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ),
get_the_title()
)
);
?>
</div><!-- .entry-content -->
<?php
// Show recent blog posts if is blog posts page (Note that get_option returns a string, so we're casting the result as an int).
if ( get_the_ID() === (int) get_option( 'page_for_posts' ) ) :
?>
<?php
// Show three most recent posts.
$recent_posts = new WP_Query(
array(
'posts_per_page' => 3,
'post_status' => 'publish',
'ignore_sticky_posts' => true,
'no_found_rows' => true,
)
);
?>
<?php if ( $recent_posts->have_posts() ) : ?>
<div class="recent-posts">
<?php
while ( $recent_posts->have_posts() ) :
$recent_posts->the_post();
get_template_part( 'template-parts/post/content', 'excerpt' );
endwhile;
wp_reset_postdata();
?>
</div><!-- .recent-posts -->
<?php endif; ?>
<?php endif; ?>
</div><!-- .wrap -->
</div><!-- .panel-content -->
</article><!-- #post-<?php the_ID(); ?> -->
Pretty simple fix in CSS. Just changed:
.panel-image {
height: 100vh;
max-height: 1200px;
}
to
.panel-image {
height: 165px;
max-height: 1200px;
}
Related
Fatal error: Class 'wp_bootstrap_navwalker' not found in
I was working on a website and somehow broke it. I did not create this website but was working to update the SEO and a few minor items. This is a bit out of my depth to be honest. I'm not sure what I did but now I'm getting: Fatal error: Class 'wp_bootstrap_navwalker' not found in /home/content/92/11969592/html/wp-content/themes/kim/header.php on line 82 I've searched everything I can find on here and on every website I can find, but I can't seem to fix it. This is the code after trying to make changes according to this topic https://stackoverflow.com/questions/45445283/fatal-error-class-wp-bootstrap-navwalker-not-found-in Can anyone help me? Thank you for any help you can provide! functions.php <?php /** * For more information on hooks, actions, and filters, * {#link https://developer.wordpress.org/plugins/} * * #package WordPress * #subpackage Twenty_Sixteen * #since Twenty Sixteen 1.0 */ /** * Twenty Sixteen only works in WordPress 4.4 or later. */ if ( version_compare( $GLOBALS['wp_version'], '4.4-alpha', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; } if ( ! function_exists( 'twentysixteen_setup' ) ) : * * #since Twenty Sixteen 1.0 */ function twentysixteen_setup() { load_theme_textdomain( 'twentysixteen' ); // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); add_theme_support( 'title-tag' ); add_theme_support( 'custom-logo', array( 'height' => 240, 'width' => 240, 'flex-height' => true, ) ); add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 1200, 9999 ); // This theme uses wp_nav_menu() in two locations. register_nav_menus( array( 'primary' => __( 'Primary Menu', 'twentysixteen' ), 'social' => __( 'Social Links Menu', 'twentysixteen' ), ) ); /* * Switch default core markup for search form, comment form, and comments * to output valid HTML5. */ add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'script', 'style', ) ); /* * Enable support for Post Formats. * * See: https://wordpress.org/support/article/post-formats/ */ add_theme_support( 'post-formats', array( 'aside', 'image', 'video', 'quote', 'link', 'gallery', 'status', 'audio', 'chat', ) ); /* * This theme styles the visual editor to resemble the theme style, * specifically font, colors, icons, and column width. */ add_editor_style( array( 'css/editor-style.css', twentysixteen_fonts_url() ) ); // Load regular editor styles into the new block-based editor. add_theme_support( 'editor-styles' ); // Load default block styles. add_theme_support( 'wp-block-styles' ); // Add support for responsive embeds. add_theme_support( 'responsive-embeds' ); // Add support for custom color scheme. add_theme_support( 'editor-color-palette', array( array( 'name' => __( 'Dark Gray', 'twentysixteen' ), 'slug' => 'dark-gray', 'color' => '#1a1a1a', ), array( 'name' => __( 'Medium Gray', 'twentysixteen' ), 'slug' => 'medium-gray', 'color' => '#686868', ), array( 'name' => __( 'Light Gray', 'twentysixteen' ), 'slug' => 'light-gray', 'color' => '#e5e5e5', ), array( 'name' => __( 'White', 'twentysixteen' ), 'slug' => 'white', 'color' => '#fff', ), array( 'name' => __( 'Blue Gray', 'twentysixteen' ), 'slug' => 'blue-gray', 'color' => '#4d545c', ), array( 'name' => __( 'Bright Blue', 'twentysixteen' ), 'slug' => 'bright-blue', 'color' => '#007acc', ), array( 'name' => __( 'Light Blue', 'twentysixteen' ), 'slug' => 'light-blue', 'color' => '#9adffd', ), array( 'name' => __( 'Dark Brown', 'twentysixteen' ), 'slug' => 'dark-brown', 'color' => '#402b30', ), array( 'name' => __( 'Medium Brown', 'twentysixteen' ), 'slug' => 'medium-brown', 'color' => '#774e24', ), array( 'name' => __( 'Dark Red', 'twentysixteen' ), 'slug' => 'dark-red', 'color' => '#640c1f', ), array( 'name' => __( 'Bright Red', 'twentysixteen' ), 'slug' => 'bright-red', 'color' => '#ff675f', ), array( 'name' => __( 'Yellow', 'twentysixteen' ), 'slug' => 'yellow', 'color' => '#ffef8e', ), ) ); add_action('after_setup_theme','wpb_theme_setup'); // Indicate widget sidebars can use selective refresh in the Customizer. add_theme_support( 'customize-selective-refresh-widgets' ); } endif; // twentysixteen_setup() add_action( 'after_setup_theme', 'twentysixteen_setup' ); /** * Sets the content width in pixels, based on the theme's design and stylesheet. * * Priority 0 to make it available to lower priority callbacks. * * #global int $content_width * * #since Twenty Sixteen 1.0 */ function twentysixteen_content_width() { $GLOBALS['content_width'] = apply_filters( 'twentysixteen_content_width', 840 ); } add_action( 'after_setup_theme', 'twentysixteen_content_width', 0 ); /** * Add preconnect for Google Fonts. * * #since Twenty Sixteen 1.6 * * #param array $urls URLs to print for resource hints. * #param string $relation_type The relation type the URLs are printed. * #return array $urls URLs to print for resource hints. */ function twentysixteen_resource_hints( $urls, $relation_type ) { if ( wp_style_is( 'twentysixteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { $urls[] = array( 'href' => 'https://fonts.gstatic.com', 'crossorigin', ); } return $urls; } add_filter( 'wp_resource_hints', 'twentysixteen_resource_hints', 10, 2 ); /** * Registers a widget area. * * #link https://developer.wordpress.org/reference/functions/register_sidebar/ * * #since Twenty Sixteen 1.0 */ function twentysixteen_widgets_init() { register_sidebar( array( 'name' => __( 'Sidebar', 'twentysixteen' ), 'id' => 'sidebar-1', 'description' => __( 'Add widgets here to appear in your sidebar.', 'twentysixteen' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="widget-title">', 'after_title' => '</h2>', ) ); register_sidebar( array( 'name' => __( 'Content Bottom 1', 'twentysixteen' ), 'id' => 'sidebar-2', 'description' => __( 'Appears at the bottom of the content on posts and pages.', 'twentysixteen' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="widget-title">', 'after_title' => '</h2>', ) ); register_sidebar( array( 'name' => __( 'Content Bottom 2', 'twentysixteen' ), 'id' => 'sidebar-3', 'description' => __( 'Appears at the bottom of the content on posts and pages.', 'twentysixteen' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="widget-title">', 'after_title' => '</h2>', ) ); } add_action( 'widgets_init', 'twentysixteen_widgets_init' ); if ( ! function_exists( 'twentysixteen_fonts_url' ) ) : /** * Register Google fonts for Twenty Sixteen. * * Create your own twentysixteen_fonts_url() function to override in a child theme. * * #since Twenty Sixteen 1.0 * * #return string Google fonts URL for the theme. */ function twentysixteen_fonts_url() { $fonts_url = ''; $fonts = array(); $subsets = 'latin,latin-ext'; /* * translators: If there are characters in your language that are not supported * by Merriweather, translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Merriweather font: on or off', 'twentysixteen' ) ) { $fonts[] = 'Merriweather:400,700,900,400italic,700italic,900italic'; } /* * translators: If there are characters in your language that are not supported * by Montserrat, translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Montserrat font: on or off', 'twentysixteen' ) ) { $fonts[] = 'Montserrat:400,700'; } /* * translators: If there are characters in your language that are not supported * by Inconsolata, translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Inconsolata font: on or off', 'twentysixteen' ) ) { $fonts[] = 'Inconsolata:400'; } if ( $fonts ) { $fonts_url = add_query_arg( array( 'family' => urlencode( implode( '|', $fonts ) ), 'subset' => urlencode( $subsets ), 'display' => urlencode( 'fallback' ), ), 'https://fonts.googleapis.com/css' ); } return $fonts_url; } endif; /** * Handles JavaScript detection. * * Adds a `js` class to the root `<html>` element when JavaScript is detected. * * #since Twenty Sixteen 1.0 */ function twentysixteen_javascript_detection() { echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n"; } add_action( 'wp_head', 'twentysixteen_javascript_detection', 0 ); /** * Enqueues scripts and styles. * * #since Twenty Sixteen 1.0 */ function twentysixteen_scripts() { // Add custom fonts, used in the main stylesheet. wp_enqueue_style( 'twentysixteen-fonts', twentysixteen_fonts_url(), array(), null ); // Add Genericons, used in the main stylesheet. wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.4.1' ); // Theme stylesheet. wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri(), array(), '20190507' ); // Theme block stylesheet. wp_enqueue_style( 'twentysixteen-block-style', get_template_directory_uri() . '/css/blocks.css', array( 'twentysixteen-style' ), '20190102' ); // Load the Internet Explorer specific stylesheet. wp_enqueue_style( 'twentysixteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentysixteen-style' ), '20170530' ); wp_style_add_data( 'twentysixteen-ie', 'conditional', 'lt IE 10' ); // Load the Internet Explorer 8 specific stylesheet. wp_enqueue_style( 'twentysixteen-ie8', get_template_directory_uri() . '/css/ie8.css', array( 'twentysixteen-style' ), '20170530' ); wp_style_add_data( 'twentysixteen-ie8', 'conditional', 'lt IE 9' ); // Load the Internet Explorer 7 specific stylesheet. wp_enqueue_style( 'twentysixteen-ie7', get_template_directory_uri() . '/css/ie7.css', array( 'twentysixteen-style' ), '20170530' ); wp_style_add_data( 'twentysixteen-ie7', 'conditional', 'lt IE 8' ); // Load the html5 shiv. wp_enqueue_script( 'twentysixteen-html5', get_template_directory_uri() . '/js/html5.js', array(), '3.7.3' ); wp_script_add_data( 'twentysixteen-html5', 'conditional', 'lt IE 9' ); wp_enqueue_script( 'twentysixteen-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20170530', true ); if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } if ( is_singular() && wp_attachment_is_image() ) { wp_enqueue_script( 'twentysixteen-keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20170530' ); } wp_enqueue_script( 'twentysixteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20181217', true ); wp_localize_script( 'twentysixteen-script', 'screenReaderText', array( 'expand' => __( 'expand child menu', 'twentysixteen' ), 'collapse' => __( 'collapse child menu', 'twentysixteen' ), ) ); } add_action( 'wp_enqueue_scripts', 'twentysixteen_scripts' ); /** * Enqueue styles for the block-based editor. * * #since Twenty Sixteen 1.6 */ function twentysixteen_block_editor_styles() { // Block styles. wp_enqueue_style( 'twentysixteen-block-editor-style', get_template_directory_uri() . '/css/editor-blocks.css', array(), '20190102' ); // Add custom fonts. wp_enqueue_style( 'twentysixteen-fonts', twentysixteen_fonts_url(), array(), null ); } add_action( 'enqueue_block_editor_assets', 'twentysixteen_block_editor_styles' ); /** * Adds custom classes to the array of body classes. * * #since Twenty Sixteen 1.0 * * #param array $classes Classes for the body element. * #return array (Maybe) filtered body classes. */ function twentysixteen_body_classes( $classes ) { // Adds a class of custom-background-image to sites with a custom background image. if ( get_background_image() ) { $classes[] = 'custom-background-image'; } // Adds a class of group-blog to sites with more than 1 published author. if ( is_multi_author() ) { $classes[] = 'group-blog'; } // Adds a class of no-sidebar to sites without active sidebar. if ( ! is_active_sidebar( 'sidebar-1' ) ) { $classes[] = 'no-sidebar'; } // Adds a class of hfeed to non-singular pages. if ( ! is_singular() ) { $classes[] = 'hfeed'; } return $classes; } add_filter( 'body_class', 'twentysixteen_body_classes' ); /** * Converts a HEX value to RGB. * * #since Twenty Sixteen 1.0 * * #param string $color The original color, in 3- or 6-digit hexadecimal form. * #return array Array containing RGB (red, green, and blue) values for the given * HEX code, empty array otherwise. */ function twentysixteen_hex2rgb( $color ) { $color = trim( $color, '#' ); if ( strlen( $color ) === 3 ) { $r = hexdec( substr( $color, 0, 1 ) . substr( $color, 0, 1 ) ); $g = hexdec( substr( $color, 1, 1 ) . substr( $color, 1, 1 ) ); $b = hexdec( substr( $color, 2, 1 ) . substr( $color, 2, 1 ) ); } elseif ( strlen( $color ) === 6 ) { $r = hexdec( substr( $color, 0, 2 ) ); $g = hexdec( substr( $color, 2, 2 ) ); $b = hexdec( substr( $color, 4, 2 ) ); } else { return array(); } return array( 'red' => $r, 'green' => $g, 'blue' => $b, ); } /** * Custom template tags for this theme. */ require get_template_directory() . '/inc/template-tags.php'; /** * Customizer additions. */ require get_template_directory() . '/inc/customizer.php'; /** * Add custom image sizes attribute to enhance responsive image functionality * for content images * * #since Twenty Sixteen 1.0 * * #param string $sizes A source size value for use in a 'sizes' attribute. * #param array $size Image size. Accepts an array of width and height * values in pixels (in that order). * #return string A source size value for use in a content image 'sizes' attribute. */ function twentysixteen_content_image_sizes_attr( $sizes, $size ) { $width = $size[0]; if ( 840 <= $width ) { $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px'; } if ( 'page' === get_post_type() ) { if ( 840 > $width ) { $sizes = '(max-width: ' . $width . 'px) 85vw, ' . $width . 'px'; } } else { if ( 840 > $width && 600 <= $width ) { $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px'; } elseif ( 600 > $width ) { $sizes = '(max-width: ' . $width . 'px) 85vw, ' . $width . 'px'; } } return $sizes; } add_filter( 'wp_calculate_image_sizes', 'twentysixteen_content_image_sizes_attr', 10, 2 ); /** * Add custom image sizes attribute to enhance responsive image functionality * for post thumbnails * * #since Twenty Sixteen 1.0 * * #param array $attr Attributes for the image markup. * #param int $attachment Image attachment ID. * #param array $size Registered image size or flat array of height and width dimensions. * #return array The filtered attributes for the image markup. */ function twentysixteen_post_thumbnail_sizes_attr( $attr, $attachment, $size ) { if ( 'post-thumbnail' === $size ) { if ( is_active_sidebar( 'sidebar-1' ) ) { $attr['sizes'] = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 60vw, (max-width: 1362px) 62vw, 840px'; } else { $attr['sizes'] = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 88vw, 1200px'; } } return $attr; } add_filter( 'wp_get_attachment_image_attributes', 'twentysixteen_post_thumbnail_sizes_attr', 10, 3 ); /** * Modifies tag cloud widget arguments to display all tags in the same font size * and use list format for better accessibility. * * #since Twenty Sixteen 1.1 * * #param array $args Arguments for tag cloud widget. * #return array The filtered arguments for tag cloud widget. */ function twentysixteen_widget_tag_cloud_args( $args ) { $args['largest'] = 1; $args['smallest'] = 1; $args['unit'] = 'em'; $args['format'] = 'list'; return $args; } add_filter( 'widget_tag_cloud_args', 'twentysixteen_widget_tag_cloud_args' ); header.php <?php /** * The template for displaying the header * * Displays all of the head element and everything up until the "site-content" div. * * #package WordPress * #subpackage Twenty_Sixteen * #since Twenty Sixteen 1.0 */ ?><!DOCTYPE html> <html <?php language_attributes(); ?> class="no-js" style="margin-top: 0px !important;"> <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title><?php if(is_home()) { echo bloginfo("name"); echo " | "; echo bloginfo("description"); } else { echo wp_title(" | ", false, right); echo bloginfo("name"); } ?></title> <link rel="profile" href="http://gmpg.org/xfn/11"> <?php if ( is_singular() && pings_open( get_queried_object() ) ) : ?> <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>"> <?php endif; ?> <?php wp_head(); ?> <style> .search .blog_page_content .b-title h3 a{color: #75c3d5;font-family: "futura-mediumregular";font-size: 35px;letter-spacing: 2px;} .search .blog_page_content .b-title h3 a:hover{text-decoration: none;color:#351561;} .search .blog_page_content .b-title h3{clear: unset; margin-top: 0px;} </style> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-44104510-1', 'auto'); ga('send', 'pageview'); </script> <script type="text/javascript"> jQuery(document).ready(function($) { jQuery('.social_menu_footer a, .social-slider-icons a, .social-icons a').each(function() { if ($(this).attr('href') == 'https://www.linkedin.com/in/kimberley-cochrane-ma-diptirp-cec-capt-079a3b1?trk=nav_responsive_tab_profile') { $(this).attr('href', 'https://www.linkedin.com/in/kimberley-cochrane-registered-psychotherapist-079a3b1/'); } }); }); </script> </head> <body <?php body_class(); ?>> <div class="<?php if(get_field('banner')) { echo "banner"; } else {echo "no-banner";}?>"> <header> <div class="header-main navbar-fixed-top"> <div class="container-fluid"> <div class="row"> <div class="col-md-4"> <div class="logo text-center"> <img src="<?php echo get_template_directory_uri() .'/img/logo.png';?>" alt="Kim Cochrane" title="Kim Cochrane" /> </div> <?php wp_nav_menu( array( 'menu' => 'primary', 'theme_location' => 'primary', 'depth' => 2, 'container' => 'div', 'container_class' => 'collapse navbar-collapse', 'container_id' => 'navbar', 'menu_class' => 'nav navbar-nav', 'fallback_cb' => 'wp_bootstrap_navwalker::fallback', 'walker' => new wp_bootstrap_navwalker()) ); ?> </div> <div class="col-md-8"> <div class="desktop-menu"> <nav class="navbar navbar-default" role="navigation"> <div class="collapse navbar-collapse" id="main-menu"> </div> </nav> </div> </div> </div> </div> </div> <div id="menu2"></div> <?php $classes = get_body_class(); if(is_front_page()) { ?> <div class="header-slider"> <?php echo do_shortcode("[metaslider id=25]"); ?> </div> <div class="social-slider-icons"> <?php dynamic_sidebar('social_icon_widget');?> </div> <?php } elseif(is_singular( 'post' ) || is_singular( 'event' ) || is_search()) { if(get_field('banner')) { ?> <div class="banner-section"> <img src="<?php echo get_field('banner');?>" /> </div> <div class="social-slider-icons"> <?php dynamic_sidebar('social_icon_widget');?> </div> <?php } } elseif(is_tax( 'event-categories' )) { if(get_field('banner')) { ?> <div class="banner-section"> <img src="<?php echo get_field('banner');?>" /> <div class="banner-text"> <div class="container"> <div class="row"> <div class="col-md-11"> <h1><?php echo single_cat_title();?></h1> </div> </div> </div> </div> </div> <div class="social-slider-icons"> <?php dynamic_sidebar('social_icon_widget');?> </div> <?php } } else { ?> <?php if(get_field('banner')) { ?> <div class="banner-section"> <img src="<?php echo get_field('banner');?>" /> <div class="banner-text"> <div class="container"> <div class="row"> <div class="col-md-11"> <?php while ( have_posts() ) : the_post(); ?> <h1><?php the_title();?></h1> <?php endwhile; ?> </div> </div> </div> </div> </div> <div class="social-slider-icons"> <?php dynamic_sidebar('social_icon_widget');?> </div> <?php } ?> <?php } ?> </header>
in /functions.php check if this lines of code are there otherwise add them /** * Register Custom Navigation Walker */ function register_navwalker(){ require_once get_template_directory() . '/class-wp-bootstrap-navwalker.php'; } add_action( 'after_setup_theme', 'register_navwalker' ); and then in /header check if this line of code are then if not add them wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 2, // 1 = no dropdowns, 2 = with dropdowns. 'container' => 'div', 'container_class' => 'collapse navbar-collapse', 'container_id' => 'bs-example-navbar-collapse-1', 'menu_class' => 'navbar-nav mr-auto', 'fallback_cb' => 'WP_Bootstrap_Navwalker::fallback', 'walker' => new WP_Bootstrap_Navwalker(), ) );
How to register additional footer widget areas in Hestia lite child theme?
Hestia lite comes with 3 widget areas in the footer. I created a child theme and I'm trying to add 2 additional widget areas but it's not working. After making the edits, I still only see 3 widget areas available in the customizer. Here are the lines I modified in class-hestia-footer.php. I added the fifth element in the $footer_sidebars_array, and changed '3' to '5'. /** * Get an array of footer sidevars slugs. * * #return array */ private function get_footer_sidebars() { $footer_sidebars_array = array( 'footer-one-widgets', 'footer-two-widgets', 'footer-three-widgets', 'footer-four-widgets', 'footer-five-widgets' ); $number_of_sidebars = get_theme_mod( 'hestia_nr_footer_widgets', '5' ); $footer_sidebars_array = array_slice( $footer_sidebars_array, 0, $number_of_sidebars ); return $footer_sidebars_array; } /** * Get the sidebars class. * * #return string the sidebar class */ private function the_sidebars_class() { $number_of_sidebars = get_theme_mod( 'hestia_nr_footer_widgets', '5' ); if ( empty( $number_of_sidebars ) ) { return 'col-md-4'; } $suffix = abs( 12 / $number_of_sidebars ); $class = 'col-md-' . $suffix; return $class; } Here is the code I modified in class-hestia-public.php: /** * Array of sidebars registered in the footer area. * The hestia_footer_widget_areas_array filter is used in the PRO version to add the extra forth sidebar. */ $footer_sidebars_array = apply_filters( 'hestia_footer_widget_areas_array', array( 'footer-one-widgets' => esc_html__( 'Footer One', 'hestia' ), 'footer-two-widgets' => esc_html__( 'Footer Two', 'hestia' ), 'footer-three-widgets' => esc_html__( 'Footer Three', 'hestia' ), 'footer-four-widgets' => esc_html__( 'Footer Four', 'hestia' ), 'footer-five-widgets' => esc_html__( 'Footer Five', 'hestia' ), ) ); /** * Number of footer sidebars that need to be registered. * This option is available only in the PRO version. In Hestia, the value is always 3. */ $hestia_nr_footer_widgets = is_customize_preview() ? '4' : get_theme_mod( 'hestia_nr_footer_widgets', '5' ); /** * If the Number of widgets areas option is selected, add the specific number of footer sidebars in the main sidebars array to be registered. */ if ( ! empty( $hestia_nr_footer_widgets ) ) { $footer_sidebars_array = array_slice( $footer_sidebars_array, 0, $hestia_nr_footer_widgets ); } if ( ! empty( $footer_sidebars_array ) ) { $sidebars_array = array_merge( $sidebars_array, $footer_sidebars_array ); }
Cannot apply breadcrumb styling to all pages of a woocommerce site
I have a woocommerce site and storefront child theme. I changed wc-template-functions.php file to have if ( ! function_exists( 'woocommerce_breadcrumb' ) ) { /** * Output the WooCommerce Breadcrumb. * * #param array $args Arguments. */ function woocommerce_breadcrumb( $args = array() ) { $args = wp_parse_args( $args, apply_filters( 'woocommerce_breadcrumb_defaults', array( 'delimiter' => '', 'wrap_before' => '<ul class="woocommerce-breadcrumb">', 'wrap_after' => '</ul>', 'before' => '<li>', 'after' => '</li>', 'home' => _x( 'Home', 'breadcrumb', 'woocommerce' ), ) ) ); $breadcrumbs = new WC_Breadcrumb(); if ( ! empty( $args['home'] ) ) { $breadcrumbs->add_crumb( $args['home'], apply_filters( 'woocommerce_breadcrumb_home_url', home_url() ) ); } $args['breadcrumb'] = $breadcrumbs->generate(); /** * WooCommerce Breadcrumb hook * * #hooked WC_Structured_Data::generate_breadcrumblist_data() - 10 */ do_action( 'woocommerce_breadcrumb', $breadcrumbs, $args ); wc_get_template( 'global/breadcrumb.php', $args ); } } I tried to apply a new css style in my breadcrumbs, through Additional CSS and all seemed ok. https://bestfamily.gr/shop/tech/%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82/laptop/acer/acer-a315-21-987x-amd/ But not all pages? posts? have the new styled breadcrumb.It exists only in pages with products. https://bestfamily.gr/%CF%84%CF%81%CF%8C%CF%80%CE%BF%CE%B9-%CF%80%CE%BB%CE%B7%CF%81%CF%89%CE%BC%CE%AE%CF%82-2/ Simple pages, Cart, Checkout do not accept my style. WHY? All other pages have a vertical! breadcrumb How to apply my css style to all Thank you
replace this code in your header.php $body_class .=' woocommerce'; <body <?php body_class($body_class); ?>>
Error in adding extra meta box for woocommerce
I'm adding extra meta boxes to be called inside tabs in front end. This is added inside add new product page.But it gives error saying: Warning: call_user_func() expects parameter 1 to be a valid callback, class 'WC_Meta_Box_Product_Features_Advantages' not found in C:\wamp\www\mysite\wp-admin\includes\template.php on line 1048 screenshot: I simply followed the way short description meta box added. Thus, I created a class file in this location: C:\wamp\www\mysite\wp-content\plugins\woocommerce\includes\admin\meta-boxes\class-wc-meta-box-features-advantages-.php and the content looks like: <?php /** * Product Features Advantages * * Replaces the standard excerpt box. * * #author WooThemes * #category Admin * #package WooCommerce/Admin/Meta Boxes * #version 2.1.0 */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * WC_Meta_Box_Product_Features_Advantages Class. */ class WC_Meta_Box_Product_Features_Advantages { /** * Output the metabox. * * #param WP_Post $post */ public static function output( $post ) { $settings = array( 'textarea_name' => 'features_advantages', 'quicktags' => array( 'buttons' => 'em,strong,link' ), 'tinymce' => array( 'theme_advanced_buttons1' => 'bold,italic,strikethrough,separator,bullist,numlist,separator,blockquote,separator,justifyleft,justifycenter,justifyright,separator,link,unlink,separator,undo,redo,separator', 'theme_advanced_buttons2' => '', ), 'editor_css' => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>', ); wp_editor( htmlspecialchars_decode( $post->post_excerpt ), 'features_advantages', apply_filters( 'woocommerce_product_features_advantages_editor_settings', $settings ) ); } } Also added few more lines here: C:\wamp\www\mysite\wp-content\plugins\woocommerce\includes\admin\class-wc-admin-meta-boxes.php inside add_meta_boxes() function. add_meta_box( 'features_advantages', __( 'Product Features and Advantages', 'woocommerce' ), 'WC_Meta_Box_Product_Features_Advantages::output', 'product', 'normal' ); and this line inside remove_meta_boxes() remove_meta_box( 'features_advantages', 'product', 'normal' );
you should add in functions.php file not in plugin folder add this code in your current active theme functions.php: add_action( 'add_meta_boxes', 'product_details_add' ); add_action( 'save_post', 'product_details_save' ); function product_details_add() { add_meta_box( 'product_details', 'Product Details', 'product_details_call', 'product', 'normal', 'high' ); } function product_details_call( $post ) { // Use nonce for verification wp_nonce_field( plugin_basename( __FILE__ ), 'product_details_noncename' ); $field_value = get_post_meta( $post->ID, 'product_details_meta', false ); wp_editor( $field_value[0], 'product_details_meta' ); }
Fatal error: Cannot use object of type WP_Error as array in wp-admin/includes/post.php on line 354
When I try to save a post in wordpress, I get this message : Fatal error: Cannot use object of type WP_Error as array in wp-admin/includes/post.php on line 354 Line 354 in my theme: if ( ! empty( $_term ) ) { $clean_terms[] = intval( $_term[0] ); //Line : 354 } else { // No existing term was found, so pass the string. A new term will be created. $clean_terms[] = $term; } This is the function.php of the my theme: <?php require_once 'inc/functions-nav-menu.php'; require_once 'inc/functions-comments.php'; require_once 'inc/functions-custom-header.php'; require_once 'inc/functions-meta.php'; require_once 'inc/functions-sidebar.php'; require_once 'inc/functions-product.php'; /** * Load theme domain name to enable language support. */ load_theme_textdomain( 'smr', get_template_directory() . '/languages' ); /** * Set post type to main query on home page, because of we are displaying products on front page * * We use is_front_page() instead of is_home() condition because of if user made choice to * * display page on frontend and selected two equal pages both in "Posts page" and "Front page" * * select boxes - we will see list of products like list of pages. * * * * See difference between this conditional for more info. */ add_action( 'pre_get_posts', function( $query ) { if ( is_front_page() && $query->is_main_query() ) $query->set( 'post_type', array( 'smr-product' ) ); return $query; }); /** * Add editor styles to admin area * By default editor-style.css is loaded. Depending on "style_schema" option * we load corresponding stylesheets. * * Add theme supports * * Thumbnails * Remove page supports * * Comments */ add_action( 'init', function() { add_editor_style(); /* load editor-style css file in order to used style schema */ $option = get_option( 'smr_theme_options' ); switch ( $option['style_schema'] ) { case 'red': { add_editor_style('editor-style-red.css'); break; } } /* Add theme supports thumbnails for post */ add_theme_support( 'post-thumbnails' ); /* Remove comments support for pages */ remove_post_type_support( 'page', 'comments' ); }); /** * Retrieve protected post password form content. * * #return string HTML content for password form for password protected post. */ add_filter( 'the_password_form', function() { $post = get_post(); $label = 'pwbox-' . ( empty( $post->ID ) ? rand() : $post->ID ); return sprintf( '<form action="%s" method="post" class="post-password-protected"> <p>%s</p> <input name="post_password" id="%s" type="password" placeholder="Type password here..." size="20" /> <input type="submit" name="Submit" value="%s" /> </form>', esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ), __( 'This post is password protected. To view it please enter your password below:', 'smr' ), $label, esc_attr__( 'Submit', 'smr' ) ); }); /** * Registering new section on admin theme customization page to make ability to admin to switch theme styles. * * We have two style schemas: 'silver' and 'red'. 'silver' is used by default. * Admin chose of used schema is saved in option[smr_theme_options][style_schema]. */ add_action( 'customize_register', function( WP_Customize_Manager $wp_customize ) { $wp_customize->add_section( 'smr_color_scheme', array( 'title' => __( 'Color Scheme', 'smr' ), )); $wp_customize->add_setting( 'smr_theme_options[style_schema]', array( 'default' => 'silver', 'capability' => 'edit_theme_options', 'type' => 'option', )); $wp_customize->add_control( 'example_select_box', array( 'settings' => 'smr_theme_options[style_schema]', 'label' => __( 'Select Style Schema:', 'smr' ), 'section' => 'smr_color_scheme', 'type' => 'select', 'choices' => smr_theme_options_schema_style_get_allowed() )); }); /** * Enqueues scripts and styles for front-end. * * Theme has choose style schema option, admin can choose it from theme customize menu. * In order to that choose, we load needed css file. * * #see action to hook "customize_register" below for more info about alowed switched styles. */ add_action( 'wp_enqueue_scripts', function() { /* Stylesheet */ global $wp_styles; wp_enqueue_style( 'smr-stylesheet-bootstrap', get_template_directory_uri() . '/css/bootstrap.css' ); wp_enqueue_style( 'smr-stylesheet-bootstrap-responsive', get_template_directory_uri() . '/css/bootstrap-responsive.css' ); wp_enqueue_style( 'smr-stylesheet-style', get_template_directory_uri() . '/css/style.css' ); wp_enqueue_style( 'smr-stylesheet-form', get_template_directory_uri() . '/css/form.css' ); /* load css file if needs (if theme style is not default) */ $option = get_option( 'smr_theme_options' ); if ( in_array( $option['style_schema'], array_keys( smr_theme_options_schema_style_get_allowed() ) ) && file_exists( get_template_directory() . '/css/style-' . $option['style_schema'] . '.css' ) ) wp_enqueue_style( 'smr-stylesheet-style-' . $option['style_schema'], get_template_directory_uri() . '/css/style-' . $option['style_schema'] . '.css' ); wp_enqueue_style( 'smr-stylesheet-style-responsive', get_template_directory_uri() . '/css/style-responsive.css' ); /* Loads main stylesheet */ wp_enqueue_style( 'smr-stylesheet', get_stylesheet_uri() ); /* Loads the Internet Explorer specific stylesheet */ wp_enqueue_style( 'smr-stylesheet-ie', get_template_directory_uri() . '/css/ie.css' ); wp_enqueue_style( 'smr-stylesheet-ie-lt9', get_template_directory_uri() . '/css/ie-lt9.css' ); wp_enqueue_style( 'smr-stylesheet-ie7', get_template_directory_uri() . '/css/ie7.css' ); $wp_styles->add_data( 'smr-stylesheet-ie', 'conditional', 'IE' ); $wp_styles->add_data( 'smr-stylesheet-ie-lt9', 'conditional', 'lt IE 9' ); $wp_styles->add_data( 'smr-stylesheet-ie7', 'conditional', 'IE 7' ); /* Javascript */ wp_enqueue_script( 'smr-javascript-jquery', get_template_directory_uri() . '/js/jquery-1.7.1.min.js', array() ); wp_enqueue_script( 'smr-javascript-bootstrap-min', get_template_directory_uri() . '/js/bootstrap.min.js', array(), FALSE, TRUE ); /* Load script to renew social buttons data ( on front page, on product category page and on single product page ) */ if ( is_home() || 'smr-product-category' === get_query_var('taxonomy') || ( is_single() && 'smr-product' === get_post_type() ) ) wp_enqueue_script( 'smr-javascript-smr-social-buttons', get_template_directory_uri() . '/js/smr-social-buttons.js', array(), FALSE, TRUE ); /* we use jquery.isotope only on front page and product category page */ if ( is_home() || 'smr-product-category' === get_query_var('taxonomy') ) { wp_enqueue_script( 'smr-javascript-jquery-isotope-min', get_template_directory_uri() . '/js/jquery.isotope.min.js', array(), FALSE, TRUE ); wp_enqueue_script( 'smr-javascript-smr-landing-page', get_template_directory_uri() . '/js/smr-landing-page.js', array(), FALSE, TRUE ); } /* Load script for single product ( to hide/show "overview", "details" ) */ if ( is_single() && 'smr-product' === get_post_type() ) wp_enqueue_script( 'smr-javascript-smr-product-single', get_template_directory_uri() . '/js/smr-product-single.js', array(), FALSE, TRUE ); wp_enqueue_script( 'smr-javascript-smr-common', get_template_directory_uri() . '/js/smr-common.js', array(), FALSE, TRUE ); wp_enqueue_script( 'comment-reply', array(), FALSE, TRUE ); }); /** * Returns more button to use in except() */ add_filter( 'excerpt_more', function( $more ) { global $post; // return ! is_home() // ? '<div class="right read-more"><a class="btn" href="'. get_permalink( $post->ID ) . '">Read more</a></div>' // : ' [Read more...]'; return ' [Read more...]'; }); /** * Creates a nicely formatted and more specific title element text * for output in head of document, based on current view. */ add_filter( 'wp_title', function( $title, $sep ) { global $paged, $page; if ( is_feed() ) return $title; /* Add the site name */ $title .= get_bloginfo( 'name' ); /* Add the site description for the home/front page */ $site_description = get_bloginfo( 'description', 'display' ); if ( $site_description && ( is_home() || is_front_page() ) ) $title = "$title $sep $site_description"; /* Add a page number if necessary */ if ( $paged >= 2 || $page >= 2 ) $title = "$title $sep " . sprintf( __( 'Page %s', 'smr' ), max( $paged, $page ) ); return $title; }, 10, 2 ); /** * Return allowed theme color styles array */ if ( ! function_exists('smr_theme_options_schema_style_get_allowed') ) { function smr_theme_options_schema_style_get_allowed() { return array( 'silver' => 'Silver', 'red' => 'Red' ); } } /** * Displays navigation to next/previous pages when applicable. */ if ( ! function_exists( 'smr_content_pagination' ) ) { function smr_content_pagination() { global $wp_query; if ( $wp_query->max_num_pages > 1 ) : ?> <nav class="nav-single"> <span class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Previous', 'smr' ) ); ?></span> <span class="nav-next"><?php previous_posts_link( __( 'Next <span class="meta-nav">→</span>', 'smr' ) ); ?></span> <div class="clearfix"></div> </nav> <?php endif; } } /** * Returns default image url */ if ( ! function_exists('smr_get_default_image_url') ) { function smr_get_default_image_url( $type = 'smr-product' ) { $file_url = get_template_directory_uri() . '/images/placeholder_' . $type . '.png'; $file = get_template_directory() . '/images/placeholder_' . $type . '.png'; return ( file_exists( $file ) ) ? $file_url : get_template_directory_uri() . "/images/placeholder_smr-product.png"; } } /** * Display escaped title. * We add this function because wordpress doesn`t do it. * It means wordpress function 'the_title()'. * * #param $post - post id */ if ( ! function_exists('smr_the_title') ) { function smr_the_title( $post = 0 ) { echo esc_attr( get_the_title( $post ) ); } } Could anyone help me find the bug?