dongye1912
dongye1912
2013-09-23 10:51
浏览 63
已采纳

Wordpress中的非法字符串偏移警告

I am facing error/Warning Illegal string offset

I have check all my code but no error reason found. with below function my theme style is working the code is written in word press theme in the function.php.

( ! ) SCREAM: Error suppression ignored for ( ! ) Warning: Illegal string offset 'face' in F:\wamp\www\wordpress-3.6.1-newsduke\wp-content\themes\hotnews\functions\theme-functions.php on line 140

 function freshthemes_theme_styles() {

        /* Google fonts array */
        $google_fonts = array_keys( freshthemes_typography_get_google_fonts() );

        /* Define all the options that possibly have a unique Google font */
        $body_font = ft_get_option('body_font', 'Arial, Helvetica, san-serif');
        $heading_font = ft_get_option('heading_font', 'Arial, Helvetica, san-serif');
        $menu_nav_font = ft_get_option('menu_nav_font', 'Arial, Helvetica, san-serif');

        /* Get the font face for each option and put it in an array */
        $selected_fonts = array(
            $body_font['face'],
            $heading_font['face'],
            $menu_nav_font['face'],
        );

        /* Remove any duplicates in the list */
        $selected_fonts = array_unique($selected_fonts);

        /* If it is a Google font, go ahead and call the function to enqueue it */
        foreach ( $selected_fonts as $font ) {
            if ( in_array( $font, $google_fonts ) ) {
                freshthemes_typography_enqueue_google_font($font);
            }
        }

        // Register our styles.
        wp_register_style('main', get_stylesheet_uri(), false, THEME_VERSION, 'all');
        wp_register_style('prettyPhoto', THEME_DIR . '/stylesheets/prettyPhoto.css', false, THEME_VERSION, 'all');
        wp_register_style('responsive', THEME_DIR . '/stylesheets/responsive.css', false, THEME_VERSION, 'all');
        wp_register_style('custom-style', THEME_DIR . '/functions/framework/frontend/custom-style.css', false, filemtime(THEME_PATH . '/functions/framework/frontend/custom-style.css'), 'all');

        // Enqueue them.
        wp_enqueue_style('main');
        wp_enqueue_style('custom-style');
        wp_enqueue_style('prettyPhoto');
        wp_enqueue_style('responsive');
    }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dsfjnxjlbqv9812
    dsfjnxjlbqv9812 2013-09-23 11:11
    已采纳

    Try:

    $selected_fonts = array(
        $body_font,
        $heading_font,
        $menu_nav_font,
    );
    

    As $body_font, $heading_font and $menu_nav_font are string, using those as array will produce the warnings.

    EDIT:

    To be more generic:

    $selected_fonts = array(
        is_array($body_font) && isset($body_font['face']) ? $body_font['face'] : $body_font,
        is_array($heading_font) && isset($heading_font['face']) ? $heading_font['face'] : $heading_font,
        is_array($menu_nav_font) && isset($menu_nav_font['face']) ? $menu_nav_font['face'] : $menu_nav_font,
    );
    
    点赞 评论
  • duadpnld426905
    duadpnld426905 2013-09-23 10:58
    $selected_fonts = array(
        $body_font['face'],
        $heading_font['face'],
        $menu_nav_font['face'],
    );
    

    One or more of these variables is a string, which you are trying to access like an array, this only works if you access it with a numeric key slammer than strlen-1

    To confirm this, do a var_dump($body_font, $heading_font, $menu_nav_font) too check which one is not actually an array, but a string.

    点赞 评论

相关推荐