Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Update auf PHP 8.1 fataler Fehler auf meiner Website verursacht“

Mausi89

*Mausi*

Hallo zusammen,

die Webseite eines Bekannten läuft noch mit PHP 7.4, das müssen wir jetzt leider ändern und müssen auf PHP 8.0 oder 8.1 updaten. Leider habe ich nach dem Update immer eine weiße Seite mit der Nachricht "Es, gab einen kritischen Fehler auf deiner Website.". Jetzt habe ich mir eine debug.log Datei eingerichtet, die mir folgenden Fehler bringt:


[24-Jan-2023 17:29:48 UTC] PHP Deprecated: Required parameter $width follows optional parameter $attach_id in /homepages/.../wp-content/plugins/js_composer/include/helpers/helpers.php on line 415 [24-Jan-2023 17:29:48 UTC] PHP Deprecated: Required parameter $height follows optional parameter $attach_id in /homepages/.../wp-content/plugins/js_composer/include/helpers/helpers.php on line 415


Ich weiß, dass es mit dem Plug-in "WPBakery Visual Composer" zutun hat. Ich probiere schon die ganze zeit rum, aber leider kenne ich mich mit PHP nicht gut aus, um den Fehler selber zu beheben.

Ich hoffe, einer von euch kann mir helfen, was ich in meiner "helpers.php" Datei ändern muss, damit die Webseite auch wieder mit PHP 8 funktioniert. Das Plug-in weglassen geht leider nicht.


Danke schon mal für eure Hilfe.


Hier noch der Code aus der "helpers.php" Datei.

PHP:
<?php
if ( ! defined( 'ABSPATH' ) ) {
    die( '-1' );
}

/**
 * WPBakery Visual Composer helpers functions
 *
 * @package WPBakeryVisualComposer
 *
 */

// Check if this file is loaded in js_composer
if ( ! defined( 'WPB_VC_VERSION' ) ) {
    die( '-1' );
}

/**
 * @param array $params
 *
 * @since 4.2
 * vc_filter: vc_wpb_getimagesize - to override output of this function
 * @return array|bool
 */
function wpb_getImageBySize( $params = array() ) {
    $params = array_merge( array(
        'post_id' => null,
        'attach_id' => null,
        'thumb_size' => 'thumbnail',
        'class' => '',
    ), $params );

    if ( ! $params['thumb_size'] ) {
        $params['thumb_size'] = 'thumbnail';
    }

    if ( ! $params['attach_id'] && ! $params['post_id'] ) {
        return false;
    }

    $post_id = $params['post_id'];

    $attach_id = $post_id ? get_post_thumbnail_id( $post_id ) : $params['attach_id'];
    $attach_id = apply_filters( 'vc_object_id', $attach_id );
    $thumb_size = $params['thumb_size'];
    $thumb_class = ( isset( $params['class'] ) && '' !== $params['class'] ) ? $params['class'] . ' ' : '';

    global $_wp_additional_image_sizes;
    $thumbnail = '';

    if ( is_string( $thumb_size ) && ( ( ! empty( $_wp_additional_image_sizes[ $thumb_size ] ) && is_array( $_wp_additional_image_sizes[ $thumb_size ] ) ) || in_array( $thumb_size, array(
                'thumbnail',
                'thumb',
                'medium',
                'large',
                'full',
            ) ) )
    ) {
        $attributes = array( 'class' => $thumb_class . 'attachment-' . $thumb_size );
        $thumbnail = wp_get_attachment_image( $attach_id, $thumb_size, false, $attributes );
    } elseif ( $attach_id ) {
        if ( is_string( $thumb_size ) ) {
            preg_match_all( '/\d+/', $thumb_size, $thumb_matches );
            if ( isset( $thumb_matches[0] ) ) {
                $thumb_size = array();
                $count = count( $thumb_matches[0] );
                if ( $count > 1 ) {
                    $thumb_size[] = $thumb_matches[0][0]; // width
                    $thumb_size[] = $thumb_matches[0][1]; // height
                } elseif ( 1 === $count ) {
                    $thumb_size[] = $thumb_matches[0][0]; // width
                    $thumb_size[] = $thumb_matches[0][0]; // height
                } else {
                    $thumb_size = false;
                }
            }
        }
        if ( is_array( $thumb_size ) ) {
            // Resize image to custom size
            $p_img = wpb_resize( $attach_id, null, $thumb_size[0], $thumb_size[1], true );
            $alt = trim( strip_tags( get_post_meta( $attach_id, '_wp_attachment_image_alt', true ) ) );
            $attachment = get_post( $attach_id );
            if ( ! empty( $attachment ) ) {
                $title = trim( strip_tags( $attachment->post_title ) );

                if ( empty( $alt ) ) {
                    $alt = trim( strip_tags( $attachment->post_excerpt ) ); // If not, Use the Caption
                }
                if ( empty( $alt ) ) {
                    $alt = $title;
                } // Finally, use the title
                if ( $p_img ) {

                    $attributes = vc_stringify_attributes( array(
                        'class' => $thumb_class,
                        'src' => $p_img['url'],
                        'width' => $p_img['width'],
                        'height' => $p_img['height'],
                        'alt' => $alt,
                        'title' => $title,
                    ) );

                    $thumbnail = '<img ' . $attributes . ' />';
                }
            }
        }
    }

    $p_img_large = wp_get_attachment_image_src( $attach_id, 'large' );

    return apply_filters( 'vc_wpb_getimagesize', array(
        'thumbnail' => $thumbnail,
        'p_img_large' => $p_img_large,
    ), $attach_id, $params );
}

function vc_get_image_by_size( $id, $size ) {
    global $_wp_additional_image_sizes;

    if ( is_string( $size ) && ( ( ! empty( $_wp_additional_image_sizes[ $size ] ) && is_array( $_wp_additional_image_sizes[ $size ] ) ) || in_array( $size, array(
                'thumbnail',
                'thumb',
                'medium',
                'large',
                'full',
            ) ) )
    ) {
        return wp_get_attachment_image_src( $id, $size );
    } else {
        if ( is_string( $size ) ) {
            preg_match_all( '/\d+/', $size, $thumb_matches );
            if ( isset( $thumb_matches[0] ) ) {
                $size = array();
                $count = count( $thumb_matches[0] );
                if ( $count > 1 ) {
                    $size[] = $thumb_matches[0][0]; // width
                    $size[] = $thumb_matches[0][1]; // height
                } elseif ( 1 === $count ) {
                    $size[] = $thumb_matches[0][0]; // width
                    $size[] = $thumb_matches[0][0]; // height
                } else {
                    $size = false;
                }
            }
        }
        if ( is_array( $size ) ) {
            // Resize image to custom size
            $p_img = wpb_resize( $id, null, $size[0], $size[1], true );

            return $p_img['url'];
        }
    }

    return '';
}

/**
 * @param $width
 *
 * @deprecated 4.5
 * @since 4.2
 * @return string
 */
function wpb_getColumnControls( $width ) {
    _deprecated_function( 'wpb_getColumnControls', '4.5 (will be removed in 5.1)' );

    switch ( $width ) {
        case 'vc_col-md-2' :
            $w = '1/6';
            break;
        case 'vc_col-sm-2' :
            $w = '1/6';
            break;
        case 'vc_col-sm-3' :
            $w = '1/4';
            break;
        case 'vc_col-sm-4' :
            $w = '1/3';
            break;
        case 'vc_col-sm-6' :
            $w = '1/2';
            break;
        case 'vc_col-sm-8' :
            $w = '2/3';
            break;
        case 'vc_col-sm-9' :
            $w = '3/4';
            break;
        case 'vc_col-sm-12' :
            $w = '1/1';
            break;

        default :
            $w = $width;
    }

    return $w;
}

/* Convert vc_col-sm-3 to 1/4
---------------------------------------------------------- */
/**
 * @param $width
 *
 * @since 4.2
 * @return string
 */
function wpb_translateColumnWidthToFractional( $width ) {
    switch ( $width ) {
        case 'vc_col-sm-2' :
            $w = '1/6';
            break;
        case 'vc_col-sm-3' :
            $w = '1/4';
            break;
        case 'vc_col-sm-4' :
            $w = '1/3';
            break;
        case 'vc_col-sm-6' :
            $w = '1/2';
            break;
        case 'vc_col-sm-8' :
            $w = '2/3';
            break;
        case 'vc_col-sm-9' :
            $w = '3/4';
            break;
        case 'vc_col-sm-12' :
            $w = '1/1';
            break;

        default :
            $w = is_string( $width ) ? $width : '1/1';
    }

    return $w;
}

/**
 * @param $width
 *
 * @since 4.2
 * @return bool|string
 */
function wpb_translateColumnWidthToSpan( $width ) {
    preg_match( '/(\d+)\/(\d+)/', $width, $matches );

    if ( ! empty( $matches ) ) {
        $part_x = (int) $matches[1];
        $part_y = (int) $matches[2];
        if ( $part_x > 0 && $part_y > 0 ) {
            $value = ceil( $part_x / $part_y * 12 );
            if ( $value > 0 && $value <= 12 ) {
                $width = 'vc_col-sm-' . $value;
            }
        }
    }

    return $width;
}

/**
 * @param $content
 * @param bool $autop
 *
 * @since 4.2
 * @return string
 */
function wpb_js_remove_wpautop( $content, $autop = false ) {

    if ( $autop ) { // Possible to use !preg_match('('.WPBMap::getTagsRegexp().')', $content)
        $content = wpautop( preg_replace( '/<\/?p\>/', "\n", $content ) . "\n" );
    }

    return do_shortcode( shortcode_unautop( $content ) );
}

if ( ! function_exists( 'shortcode_exists' ) ) {
    /**
     * Check if a shortcode is registered in WordPress.
     *
     * Examples: shortcode_exists( 'caption' ) - will return true.
     * shortcode_exists( 'blah' ) - will return false.
     *
     * @param bool $shortcode
     *
     * @since 4.2
     * @return bool
     */
    function shortcode_exists( $shortcode = false ) {
        global $shortcode_tags;

        if ( ! $shortcode ) {
            return false;
        }

        if ( array_key_exists( $shortcode, $shortcode_tags ) ) {
            return true;
        }

        return false;
    }
}

/* Helper function which returns list of site attached images,
   and if image is attached to the current post it adds class
   'added'
---------------------------------------------------------- */
if ( ! function_exists( 'vc_siteAttachedImages' ) ) {
    /**
     * @param array $att_ids
     *
     * @since 4.11
     * @return string
     */
    function vc_siteAttachedImages( $att_ids = array() ) {
        $output = '';

        $limit = (int) apply_filters( 'vc_site_attached_images_query_limit', - 1 );
        $media_images = get_posts( 'post_type=attachment&orderby=ID&numberposts=' . $limit );
        foreach ( $media_images as $image_post ) {
            $thumb_src = wp_get_attachment_image_src( $image_post->ID, 'thumbnail' );
            $thumb_src = $thumb_src[0];

            $class = ( in_array( $image_post->ID, $att_ids ) ) ? ' class="added"' : '';

            $output .= '<li' . $class . '>
                        <img rel="' . esc_attr( $image_post->ID ) . '" src="' . esc_url( $thumb_src ) . '" />
                        <span class="img-added">' . __( 'Added', 'js_composer' ) . '</span>
                    </li>';
        }

        if ( '' !== $output ) {
            $output = '<ul class="gallery_widget_img_select">' . $output . '</ul>';
        }

        return $output;
    }
}

/**
 * @param array $images IDs or srcs of images
 *
 * @since 4.2
 * @return string
 */
function fieldAttachedImages( $images = array() ) {
    $output = '';

    foreach ( $images as $image ) {
        if ( is_numeric( $image ) ) {
            $thumb_src = wp_get_attachment_image_src( $image, 'thumbnail' );
            $thumb_src = isset( $thumb_src[0] ) ? $thumb_src[0] : '';
        } else {
            $thumb_src = $image;
        }

        if ( $thumb_src ) {
            $output .= '
            <li class="added">
                <img rel="' . esc_attr( $image ) . '" src="' . esc_url( $thumb_src ) . '" />
                <a href="#" class="vc_icon-remove"><i class="vc-composer-icon vc-c-icon-close"></i></a>
            </li>';
        }
    }

    return $output;
}

/**
 * @param $param_value
 *
 * @since 4.2
 * @return array
 */
function wpb_removeNotExistingImgIDs( $param_value ) {
    $tmp = explode( ',', $param_value );
    $return_ar = array();
    foreach ( $tmp as $id ) {
        if ( wp_get_attachment_image( $id ) ) {
            $return_ar[] = $id;
        }
    }
    $tmp = implode( ',', $return_ar );

    return $tmp;
}

/*
* Resize images dynamically using wp built in functions
* Victor Teixeira
*
* php 5.2+
*
* Exemplo de uso:
*
* <?php
* $thumb = get_post_thumbnail_id();
* $image = vt_resize( $thumb, '', 140, 110, true );
* ?>
* <img src="<?php echo $image[url]; ?>" width="<?php echo $image[width]; ?>" height="<?php echo $image[height]; ?>" />
*
*/
if ( ! function_exists( 'wpb_resize' ) ) {
    /**
     * @param int $attach_id
     * @param string $img_url
     * @param int $width
     * @param int $height
     * @param bool $crop
     *
     * @since 4.2
     * @return array
     */
    function wpb_resize( $attach_id = null, $img_url = null, $width, $height, $crop = false ) {
        // this is an attachment, so we have the ID
        $image_src = array();
        if ( $attach_id ) {
            $image_src = wp_get_attachment_image_src( $attach_id, 'full' );
            $actual_file_path = get_attached_file( $attach_id );
            // this is not an attachment, let's use the image url
        } elseif ( $img_url ) {
            $file_path = parse_url( $img_url );
            $actual_file_path = rtrim( ABSPATH, '/' ) . $file_path['path'];
            $orig_size = getimagesize( $actual_file_path );
            $image_src[0] = $img_url;
            $image_src[1] = $orig_size[0];
            $image_src[2] = $orig_size[1];
        }
        if ( ! empty( $actual_file_path ) ) {
            $file_info = pathinfo( $actual_file_path );
            $extension = '.' . $file_info['extension'];

            // the image path without the extension
            $no_ext_path = $file_info['dirname'] . '/' . $file_info['filename'];

            $cropped_img_path = $no_ext_path . '-' . $width . 'x' . $height . $extension;

            // checking if the file size is larger than the target size
            // if it is smaller or the same size, stop right here and return
            if ( $image_src[1] > $width || $image_src[2] > $height ) {

                // the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match)
                if ( file_exists( $cropped_img_path ) ) {
                    $cropped_img_url = str_replace( basename( $image_src[0] ), basename( $cropped_img_path ), $image_src[0] );
                    $vt_image = array(
                        'url' => $cropped_img_url,
                        'width' => $width,
                        'height' => $height,
                    );

                    return $vt_image;
                }

                if ( false == $crop ) {
                    // calculate the size proportionaly
                    $proportional_size = wp_constrain_dimensions( $image_src[1], $image_src[2], $width, $height );
                    $resized_img_path = $no_ext_path . '-' . $proportional_size[0] . 'x' . $proportional_size[1] . $extension;

                    // checking if the file already exists
                    if ( file_exists( $resized_img_path ) ) {
                        $resized_img_url = str_replace( basename( $image_src[0] ), basename( $resized_img_path ), $image_src[0] );

                        $vt_image = array(
                            'url' => $resized_img_url,
                            'width' => $proportional_size[0],
                            'height' => $proportional_size[1],
                        );

                        return $vt_image;
                    }
                }

                // no cache files - let's finally resize it
                $img_editor = wp_get_image_editor( $actual_file_path );

                if ( is_wp_error( $img_editor ) || is_wp_error( $img_editor->resize( $width, $height, $crop ) ) ) {
                    return array(
                        'url' => '',
                        'width' => '',
                        'height' => '',
                    );
                }

                $new_img_path = $img_editor->generate_filename();

                if ( is_wp_error( $img_editor->save( $new_img_path ) ) ) {
                    return array(
                        'url' => '',
                        'width' => '',
                        'height' => '',
                    );
                }
                if ( ! is_string( $new_img_path ) ) {
                    return array(
                        'url' => '',
                        'width' => '',
                        'height' => '',
                    );
                }

                $new_img_size = getimagesize( $new_img_path );
                $new_img = str_replace( basename( $image_src[0] ), basename( $new_img_path ), $image_src[0] );

                // resized output
                $vt_image = array(
                    'url' => $new_img,
                    'width' => $new_img_size[0],
                    'height' => $new_img_size[1],
                );

                return $vt_image;
            }

            // default output - without resizing
            $vt_image = array(
                'url' => $image_src[0],
                'width' => $image_src[1],
                'height' => $image_src[2],
            );

            return $vt_image;
        }

        return false;
    }
}

if ( ! function_exists( 'wpb_debug' ) ) {
    /**
     * Returns bool if wpb_debug is provided in url - set visual composer debug mode.
     * Used for example in shortcodes (end block comment for example)
     * @since 4.2
     * @return bool
     */
    function wpb_debug() {
        if ( ( isset( $_GET['wpb_debug'] ) && 'true' === $_GET['wpb_debug'] ) || ( isset( $_GET['vc_debug'] ) && 'true' === $_GET['vc_debug'] ) ) {
            return true;
        } else {
            return false;
        }
    }
}

/**
 * Method adds css class to body tag.
 *
 * Hooked class method by body_class WP filter. Method adds custom css class to body tag of the page to help
 * identify and build design specially for VC shortcodes.
 * Used in wp-content/plugins/js_composer/include/classes/core/class-vc-base.php\Vc_Base\bodyClass
 *
 * @param $classes
 *
 * @since 4.2
 * @return array
 */
function js_composer_body_class( $classes ) {
    $classes[] = 'wpb-js-composer js-comp-ver-' . WPB_VC_VERSION;
    $disable_responsive = vc_settings()->get( 'not_responsive_css' );
    if ( '1' !== $disable_responsive ) {
        $classes[] = 'vc_responsive';
    } else {
        $classes[] = 'vc_non_responsive';
    }

    return $classes;
}

/**
 * @param $m
 *
 * @since 4.2
 * @return string
 */
function vc_convert_shortcode( $m ) {
    list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m;
    if ( 'vc_row' === $tag || 'vc_section' === $tag ) {
        return $output;
    }
    $result = $width = $el_position = '';
    $shortcode_attr = shortcode_parse_atts( $attr_string );
    extract( shortcode_atts( array(
        'width' => '1/1',
        'el_class' => '',
        'el_position' => '',
    ), $shortcode_attr ) );
    // Start
    if ( preg_match( '/first/', $el_position ) || empty( $shortcode_attr['width'] ) || '1/1' === $shortcode_attr['width'] ) {
        $result = '[vc_row]';
    }
    if ( 'vc_column' !== $tag ) {
        $result .= '[vc_column width="' . $width . '"]';
    }

    // Tag
    $pattern = get_shortcode_regex();
    if ( 'vc_column' === $tag ) {
        $result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_inner_shortcode', $content ) . "[/{$tag}{$m_four}]";
    } elseif ( 'vc_tabs' === $tag || 'vc_accordion' === $tag || 'vc_tour' === $tag ) {
        $result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_tab_inner_shortcode', $content ) . "[/{$tag}{$m_four}]";
    } else {
        $result .= preg_replace( '/(\"\d\/\d\")/', '"1/1"', $output );
    }

    // End
    if ( 'vc_column' !== $tag ) {
        $result .= '[/vc_column]';
    }
    if ( preg_match( '/last/', $el_position ) || empty( $shortcode_attr['width'] ) || '1/1' === $shortcode_attr['width'] ) {
        $result .= '[/vc_row]' . "\n";
    }

    return trim( $result );
}

/**
 * @param $m
 *
 * @since 4.2
 * @return string
 */
function vc_convert_tab_inner_shortcode( $m ) {
    list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m;
    $result = $width = $el_position = '';
    extract( shortcode_atts( array(
        'width' => '1/1',
        'el_class' => '',
        'el_position' => '',
    ), shortcode_parse_atts( $attr_string ) ) );
    $pattern = get_shortcode_regex();
    $result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_inner_shortcode', $content ) . "[/{$tag}{$m_four}]";

    return $result;
}

/**
 * @param $m
 *
 * @since 4.2
 * @return string
 */
function vc_convert_inner_shortcode( $m ) {
    list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m;
    $result = $width = $el_position = '';
    extract( shortcode_atts( array(
        'width' => '1/1',
        'el_class' => '',
        'el_position' => '',
    ), shortcode_parse_atts( $attr_string ) ) );
    if ( '1/1' !== $width ) {
        if ( preg_match( '/first/', $el_position ) ) {
            $result .= '[vc_row_inner]';
        }
        $result .= "\n" . '[vc_column_inner width="' . esc_attr( $width ) . '" el_position="' . esc_attr( $el_position ) . '"]';
        $attr = '';
        foreach ( shortcode_parse_atts( $attr_string ) as $key => $value ) {
            if ( 'width' === $key ) {
                $value = '1/1';
            } elseif ( 'el_position' === $key ) {
                $value = 'first last';
            }
            $attr .= ' ' . $key . '="' . $value . '"';
        }
        $result .= "[{$m_one}{$tag} {$attr}]" . $content . "[/{$tag}{$m_four}]";
        $result .= '[/vc_column_inner]';
        if ( preg_match( '/last/', $el_position ) ) {
            $result .= '[/vc_row_inner]' . "\n";
        }
    } else {
        $result = $output;
    }

    return $result;
}

global $vc_row_layouts;
$vc_row_layouts = array(
    /*
 * How to count mask?
 * mask = column_count . sum of all numbers. Example layout 12_12 mask = (column count=2)(1+2+1+2=6)= 26
*/
    array(
        'cells' => '11',
        'mask' => '12',
        'title' => '1/1',
        'icon_class' => '1-1',
    ),
    array(
        'cells' => '12_12',
        'mask' => '26',
        'title' => '1/2 + 1/2',
        'icon_class' => '1-2_1-2',
    ),
    array(
        'cells' => '23_13',
        'mask' => '29',
        'title' => '2/3 + 1/3',
        'icon_class' => '2-3_1-3',
    ),
    array(
        'cells' => '13_13_13',
        'mask' => '312',
        'title' => '1/3 + 1/3 + 1/3',
        'icon_class' => '1-3_1-3_1-3',
    ),
    array(
        'cells' => '14_14_14_14',
        'mask' => '420',
        'title' => '1/4 + 1/4 + 1/4 + 1/4',
        'icon_class' => '1-4_1-4_1-4_1-4',
    ),
    array(
        'cells' => '14_34',
        'mask' => '212',
        'title' => '1/4 + 3/4',
        'icon_class' => '1-4_3-4',
    ),
    array(
        'cells' => '14_12_14',
        'mask' => '313',
        'title' => '1/4 + 1/2 + 1/4',
        'icon_class' => '1-4_1-2_1-4',
    ),
    array(
        'cells' => '56_16',
        'mask' => '218',
        'title' => '5/6 + 1/6',
        'icon_class' => '5-6_1-6',
    ),
    array(
        'cells' => '16_16_16_16_16_16',
        'mask' => '642',
        'title' => '1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6',
        'icon_class' => '1-6_1-6_1-6_1-6_1-6_1-6',
    ),
    array(
        'cells' => '16_23_16',
        'mask' => '319',
        'title' => '1/6 + 4/6 + 1/6',
        'icon_class' => '1-6_2-3_1-6',
    ),
    array(
        'cells' => '16_16_16_12',
        'mask' => '424',
        'title' => '1/6 + 1/6 + 1/6 + 1/2',
        'icon_class' => '1-6_1-6_1-6_1-2',
    ),
);

/**
 * @param $width
 *
 * @since 4.2
 * @return string
 */
function wpb_vc_get_column_width_indent( $width ) {
    $identy = '11';
    if ( 'vc_col-sm-6' === $width ) {
        $identy = '12';
    } elseif ( 'vc_col-sm-3' === $width ) {
        $identy = '14';
    } elseif ( 'vc_col-sm-4' === $width ) {
        $identy = '13';
    } elseif ( 'vc_col-sm-8' === $width ) {
        $identy = '23';
    } elseif ( 'vc_col-sm-9' === $width ) {
        $identy = '34';
    } elseif ( 'vc_col-sm-2' === $width ) {
        $identy = '16'; // TODO: check why there is no "vc_col-sm-1, -5, -6, -7, -11, -12.
    } elseif ( 'vc_col-sm-10' === $width ) {
        $identy = '56';
    }

    return $identy;
}

/* Make any HEX color lighter or darker
---------------------------------------------------------- */
/**
 * @param $colour
 * @param $per
 *
 * @since 4.2
 * @return string
 */
function vc_colorCreator( $colour, $per = 10 ) {
    require_once 'class-vc-color-helper.php';
    $color = $colour;
    if ( stripos( $colour, 'rgba(' ) !== false ) {
        $rgb = str_replace( array(
            'rgba',
            'rgb',
            '(',
            ')',
        ), '', $colour );
        $rgb = explode( ',', $rgb );
        $rgb_array = array(
            'R' => $rgb[0],
            'G' => $rgb[1],
            'B' => $rgb[2],
        );
        $alpha = $rgb[3];
        try {
            $color = Vc_Color_Helper::rgbToHex( $rgb_array );
            $color_obj = new Vc_Color_Helper( $color );
            if ( $per >= 0 ) {
                $color = $color_obj->lighten( $per );
            } else {
                $color = $color_obj->darken( abs( $per ) );
            }
            $rgba = $color_obj->hexToRgb( $color );
            $rgba[] = $alpha;
            $css_rgba_color = 'rgba(' . implode( ', ', $rgba ) . ')';

            return $css_rgba_color;
        } catch ( Exception $e ) {
            // In case of error return same as given
            return $colour;
        }
    } else if ( stripos( $colour, 'rgb(' ) !== false ) {
        $rgb = str_replace( array(
            'rgba',
            'rgb',
            '(',
            ')',
        ), '', $colour );
        $rgb = explode( ',', $rgb );
        $rgb_array = array(
            'R' => $rgb[0],
            'G' => $rgb[1],
            'B' => $rgb[2],
        );
        try {
            $color = Vc_Color_Helper::rgbToHex( $rgb_array );
        } catch ( Exception $e ) {
            // In case of error return same as given
            return $colour;
        }
    }

    try {
        $color_obj = new Vc_Color_Helper( $color );
        if ( $per >= 0 ) {
            $color = $color_obj->lighten( $per );
        } else {
            $color = $color_obj->darken( abs( $per ) );
        }

        return '#' . $color;
    } catch ( Exception $e ) {
        return $colour;
    }
}

/* HEX to RGB converter
---------------------------------------------------------- */
/**
 * @param $color
 *
 * @since 4.2
 * @return array|bool
 */
function vc_hex2rgb( $color ) {
    $color = str_replace( '#', '', $color );

    if ( strlen( $color ) === 6 ) {
        list( $r, $g, $b ) = array(
            $color[0] . $color[1],
            $color[2] . $color[3],
            $color[4] . $color[5],
        );
    } elseif ( strlen( $color ) === 3 ) {
        list( $r, $g, $b ) = array(
            $color[0] . $color[0],
            $color[1] . $color[1],
            $color[2] . $color[2],
        );
    } else {
        return false;
    }

    $r = hexdec( $r );
    $g = hexdec( $g );
    $b = hexdec( $b );

    return array(
        $r,
        $g,
        $b,
    );
}

/**
 * Parse string like "title:Hello world|weekday:Monday" to array('title' => 'Hello World', 'weekday' => 'Monday')
 *
 * @param $value
 * @param array $default
 *
 * @since 4.2
 * @return array
 */
function vc_parse_multi_attribute( $value, $default = array() ) {
    $result = $default;
    $params_pairs = explode( '|', $value );
    if ( ! empty( $params_pairs ) ) {
        foreach ( $params_pairs as $pair ) {
            $param = preg_split( '/\:/', $pair );
            if ( ! empty( $param[0] ) && isset( $param[1] ) ) {
                $result[ $param[0] ] = rawurldecode( $param[1] );
            }
        }
    }

    return $result;
}

/**
 * @param $string
 *
 * @deprecated 4.5
 * @since 4.2
 * @return string
 */
function wpb_stripslashes_if_gpc_magic_quotes( $string ) {
    _deprecated_function( 'wpb_stripslashes_if_gpc_magic_quotes', '4.5 (will be removed in 5.1)', 'stripslashes' );
    if ( get_magic_quotes_gpc() ) {
        return stripslashes( $string );
    } else {
        return $string;
    }
}

/**
 * @param $v
 *
 * @since 4.2
 * @return string
 */
function vc_param_options_parse_values( $v ) {
    return rawurldecode( $v );
}

/**
 * @param $name
 * @param $settings
 *
 * @since 4.2
 * @return bool
 */
function vc_param_options_get_settings( $name, $settings ) {
    if ( is_array( $settings ) ) {
        foreach ( $settings as $params ) {
            if ( isset( $params['name'] ) && $params['name'] === $name && isset( $params['type'] ) ) {
                return $params;
            }
        }
    }

    return false;
}

/**
 * @param $atts
 *
 * @since 4.2
 * @return string
 */
function vc_convert_atts_to_string( $atts ) {
    $output = '';
    foreach ( $atts as $key => $value ) {
        $output .= ' ' . $key . '="' . $value . '"';
    }

    return $output;
}

/**
 * @param $string
 * @param $tag
 * @param $param
 *
 * @since 4.2
 * @return array
 */
function vc_parse_options_string( $string, $tag, $param ) {
    $options = $option_settings_list = array();
    $settings = WPBMap::getParam( $tag, $param );

    foreach ( preg_split( '/\|/', $string ) as $value ) {
        if ( preg_match( '/\:/', $value ) ) {
            $split = preg_split( '/\:/', $value );
            $option_name = $split[0];
            $option_settings = $option_settings_list[ $option_name ] = vc_param_options_get_settings( $option_name, $settings['options'] );
            if ( isset( $option_settings['type'] ) && 'checkbox' === $option_settings['type'] ) {
                $option_value = array_map( 'vc_param_options_parse_values', preg_split( '/\,/', $split[1] ) );
            } else {
                $option_value = rawurldecode( $split[1] );
            }
            $options[ $option_name ] = $option_value;
        }
    }
    if ( isset( $settings['options'] ) ) {
        foreach ( $settings['options'] as $setting_option ) {
            if ( 'separator' !== $setting_option['type'] && isset( $setting_option['value'] ) && empty( $options[ $setting_option['name'] ] ) ) {
                $options[ $setting_option['name'] ] = 'checkbox' === $setting_option['type'] ? preg_split( '/\,/', $setting_option['value'] ) : $setting_option['value'];
            }
            if ( isset( $setting_option['name'] ) && isset( $options[ $setting_option['name'] ] ) && isset( $setting_option['value_type'] ) ) {
                if ( 'integer' === $setting_option['value_type'] ) {
                    $options[ $setting_option['name'] ] = (int) $options[ $setting_option['name'] ];
                } elseif ( 'float' === $setting_option['value_type'] ) {
                    $options[ $setting_option['name'] ] = (float) $options[ $setting_option['name'] ];
                } elseif ( 'boolean' === $setting_option['value_type'] ) {
                    $options[ $setting_option['name'] ] = (boolean) $options[ $setting_option['name'] ];
                }
            }
        }
    }

    return $options;
}

/**
 * @since 4.2
 * @deprecated 4.2
 */
function wpb_js_composer_check_version_schedule_deactivation() {
    _deprecated_function( 'wpb_js_composer_check_version_schedule_deactivation', '4.2 (will be removed in 5.1)' );
    wp_clear_scheduled_hook( 'wpb_check_for_update' );
    delete_option( 'wpb_js_composer_show_new_version_message' );
}

/**
 * Helper function to add new third-party adaptation class.
 * @deprecated 4.4
 * @since 4.3
 *
 * @param Vc_Vendor_Interface $vendor - instance of class.
 */
function vc_add_vendor( Vc_Vendor_Interface $vendor ) {
    _deprecated_function( 'vc_add_vendor', '4.4 (will be removed in 5.1)', 'autoload logic' );
    visual_composer()->vendorsManager()->add( $vendor );
}

/**
 * Convert string to a valid css class name.
 *
 * @since 4.3
 *
 * @param string $class
 *
 * @return string
 */
function vc_build_safe_css_class( $class ) {
    return preg_replace( '/\W+/', '', strtolower( str_replace( ' ', '_', strip_tags( $class ) ) ) );
}

/**
 * Include template from templates dir.
 *
 * @since 4.3
 *
 * @param $template
 * @param array $variables - passed variables to the template.
 *
 * @param bool $once
 *
 * @return mixed
 */
function vc_include_template( $template, $variables = array(), $once = false ) {
    is_array( $variables ) && extract( $variables );
    if ( $once ) {
        return require_once vc_template( $template );
    } else {
        return require vc_template( $template );
    }
}

/**
 * Output template from templates dir.
 *
 * @since 4.4
 *
 * @param $template
 * @param array $variables - passed variables to the template.
 *
 * @param bool $once
 *
 * @return string
 */
function vc_get_template( $template, $variables = array(), $once = false ) {
    ob_start();
    vc_include_template( $template, $variables, $once );

    return ob_get_clean();
}

/**
 * if php version < 5.3 this function is required.
 */
if ( ! function_exists( 'lcfirst' ) ) {
    /**
     * @param $str
     *
     * @since 4.3, fix #1093
     * @return mixed
     */
    function lcfirst( $str ) {
        $str[0] = function_exists( 'mb_strtolower' ) ? mb_strtolower( $str[0] ) : strtolower( $str[0] );

        return $str;
    }
}
/**
 * VC Convert a value to studly caps case.
 *
 * @since 4.3
 *
 * @param  string $value
 *
 * @return string
 */
function vc_studly( $value ) {
    $value = ucwords( str_replace( array(
        '-',
        '_',
    ), ' ', $value ) );

    return str_replace( ' ', '', $value );
}

/**
 * VC Convert a value to camel case.
 *
 * @since 4.3
 *
 * @param  string $value
 *
 * @return string
 */
function vc_camel_case( $value ) {
    return lcfirst( vc_studly( $value ) );
}

/**
 * Enqueue icon element font
 * @todo move to separate folder
 * @since 4.4
 *
 * @param $font
 */
function vc_icon_element_fonts_enqueue( $font ) {
    switch ( $font ) {
        case 'fontawesome':
            wp_enqueue_style( 'font-awesome' );
            break;
        case 'openiconic':
            wp_enqueue_style( 'vc_openiconic' );
            break;
        case 'typicons':
            wp_enqueue_style( 'vc_typicons' );
            break;
        case 'entypo':
            wp_enqueue_style( 'vc_entypo' );
            break;
        case 'linecons':
            wp_enqueue_style( 'vc_linecons' );
            break;
        case 'monosocial':
            wp_enqueue_style( 'vc_monosocialiconsfont' );
            break;
        case 'material':
            wp_enqueue_style( 'vc_material' );
            break;
        default:
            do_action( 'vc_enqueue_font_icon_element', $font ); // hook to custom do enqueue style
    }
}

/**
 * Function merges defaults attributes in attributes by keeping it values
 *
 * Example
 *      array defaults     |   array attributes     |    result array
 *      'color'=>'black',         -                   'color'=>'black',
 *      'target'=>'_self',      'target'=>'_blank',   'target'=>'_blank',
 *             -                'link'=>'google.com'  'link'=>'google.com'
 *
 * @since 4.4
 *
 * @param array $defaults
 * @param array $attributes
 *
 * @return array - merged attributes
 *
 * @see vc_map_get_attributes
 */
function vc_shortcode_attribute_parse( $defaults = array(), $attributes = array() ) {
    $atts = $attributes + shortcode_atts( $defaults, $attributes );

    return $atts;
}

function vc_get_shortcode_regex( $tagregexp = '' ) {
    if ( 0 === strlen( $tagregexp ) ) {
        return get_shortcode_regex();
    }

    return '\\['                              // Opening bracket
        . '(\\[?)'                           // 1: Optional second opening bracket for escaping shortcodes: [[tag]]
        . "($tagregexp)"                     // 2: Shortcode name
        . '(?![\\w-])'                       // Not followed by word character or hyphen
        . '('                                // 3: Unroll the loop: Inside the opening shortcode tag
        . '[^\\]\\/]*'                   // Not a closing bracket or forward slash
        . '(?:' . '\\/(?!\\])'               // A forward slash not followed by a closing bracket
        . '[^\\]\\/]*'               // Not a closing bracket or forward slash
        . ')*?' . ')' . '(?:' . '(\\/)'                        // 4: Self closing tag ...
        . '\\]'                          // ... and closing bracket
        . '|' . '\\]'                          // Closing bracket
        . '(?:' . '('                        // 5: Unroll the loop: Optionally, anything between the opening and closing shortcode tags
        . '[^\\[]*+'             // Not an opening bracket
        . '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag
        . '[^\\[]*+'         // Not an opening bracket
        . ')*+' . ')' . '\\[\\/\\2\\]'             // Closing shortcode tag
        . ')?' . ')' . '(\\]?)';
}

/**
 * Used to send warning message
 *
 * @since 4.5
 *
 * @param $message
 *
 * @return string
 */
function vc_message_warning( $message ) {
    return '<div class="wpb_element_wrapper"><div class="vc_message_box vc_message_box-standard vc_message_box-rounded vc_color-warning">
    <div class="vc_message_box-icon"><i class="fa fa-exclamation-triangle"></i>
    </div><p class="messagebox_text">' . $message . '</p>
</div></div>';
}

/**
 * Extract video ID from youtube url
 *
 * @param string $url Youtube url
 *
 * @return string
 */
function vc_extract_youtube_id( $url ) {
    parse_str( parse_url( $url, PHP_URL_QUERY ), $vars );

    if ( ! isset( $vars['v'] ) ) {
        return '';
    }

    return $vars['v'];
}

function vc_taxonomies_types() {
    global $vc_taxonomies_types;
    if ( is_null( $vc_taxonomies_types ) ) {
        $vc_taxonomies_types = get_taxonomies( array( 'public' => true ), 'objects' );
    }

    return $vc_taxonomies_types;
}

/**
 * Since
 *
 * @since 4.5.3
 *
 * @param $term
 *
 * @return array
 */
function vc_get_term_object( $term ) {
    $vc_taxonomies_types = vc_taxonomies_types();

    return array(
        'label' => $term->name,
        'value' => $term->term_id,
        'group_id' => $term->taxonomy,
        'group' => isset( $vc_taxonomies_types[ $term->taxonomy ], $vc_taxonomies_types[ $term->taxonomy ]->labels, $vc_taxonomies_types[ $term->taxonomy ]->labels->name ) ? $vc_taxonomies_types[ $term->taxonomy ]->labels->name : __( 'Taxonomies', 'js_composer' ),
    );
}

/**
 * Extract width/height from string
 *
 * @param string $dimensions WxH
 *
 * @since 4.7
 *
 * @return mixed array(width, height) or false
 */
function vcExtractDimensions( $dimensions ) {
    $dimensions = str_replace( ' ', '', $dimensions );
    $matches = null;

    if ( preg_match( '/(\d+)x(\d+)/', $dimensions, $matches ) ) {
        return array(
            $matches[1],
            $matches[2],
        );
    }

    return false;
}

/**
 * Check if element has specific class
 *
 * E.g. f('foo', 'foo bar baz') -> true
 *
 * @param string $class Class to check for
 * @param string $classes Classes separated by space(s)
 *
 * @return bool
 */
function vc_has_class( $class, $classes ) {
    return in_array( $class, explode( ' ', strtolower( $classes ) ) );
}

/**
 * Remove specific class from classes string
 *
 * E.g. f('foo', 'foo bar baz') -> 'bar baz'
 *
 * @param string $class Class to remove
 * @param string $classes Classes separated by space(s)
 *
 * @return string
 */
function vc_remove_class( $class, $classes ) {
    $list_classes = explode( ' ', strtolower( $classes ) );

    $key = array_search( $class, $list_classes, true );

    if ( false === $key ) {
        return $classes;
    }

    unset( $list_classes[ $key ] );

    return implode( ' ', $list_classes );
}

/**
 * Convert array of named params to string version
 * All values will be escaped
 *
 * E.g. f(array('name' => 'foo', 'id' => 'bar')) -> 'name="foo" id="bar"'
 *
 * @param $attributes
 *
 * @return string
 */
function vc_stringify_attributes( $attributes ) {
    $atts = array();
    foreach ( $attributes as $name => $value ) {
        $atts[] = $name . '="' . esc_attr( $value ) . '"';
    }

    return implode( ' ', $atts );
}

function vc_is_responsive_disabled() {
    $disable_responsive = vc_settings()->get( 'not_responsive_css' );

    return '1' === $disable_responsive;
}

/**
 * @deprecated 4.2
 * @since 4.2
 * @return mixed|string|void
 */
function get_row_css_class() {
    _deprecated_function( 'get_row_css_class', '4.2 (will be removed in 5.1)' );
    $custom = vc_settings()->get( 'row_css_class' );

    return ! empty( $custom ) ? $custom : 'vc_row-fluid';
}

/**
 * @deprecated and will be removed
 * @since 4.2
 * @return int
 */
function vc_get_interface_version() {
    _deprecated_function( 'vc_get_interface_version', '4.2 (will be removed in 5.1)' );

    return 2;
}

/**
 * @deprecated and will be removed.
 * @since 4.2
 * @return int
 */
function vc_get_initerface_version() {
    _deprecated_function( 'vc_get_initerface_version', '4.2 (will be removed in 5.1)' );

    return vc_get_interface_version();
}

/**
 * Do shortcode single render point
 *
 * @param $atts
 * @param null $content
 * @param null $tag
 *
 * @return string
 */
function vc_do_shortcode( $atts, $content = null, $tag = null ) {
    return Vc_Shortcodes_Manager::getInstance()->getElementClass( $tag )->output( $atts, $content );
}

/**
 * Return random string
 *
 * @param int $length
 *
 * @return string
 */
function vc_random_string( $length = 10 ) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $len = strlen( $characters );
    $str = '';
    for ( $i = 0; $i < $length; $i ++ ) {
        $str .= $characters[ rand( 0, $len - 1 ) ];
    }

    return $str;
}

function vc_slugify( $str ) {
    $str = strtolower( $str );
    $str = html_entity_decode( $str );
    $str = preg_replace( '/[^\w ]+/', '', $str );
    $str = preg_replace( '/ +/', '-', $str );

    return $str;
}
 

MainAngler

Excel (SVERWEIS...)

[24-Jan-2023 17:29:48 UTC] PHP Deprecated: Required parameter $width follows optional parameter $attach_id in /homepages/.../wp-content/plugins/js_composer/include/helpers/helpers.php on line 415 [24-Jan-2023 17:29:48 UTC] PHP Deprecated: Required parameter $height follows optional parameter $attach_id in /homepages/.../wp-content/plugins/js_composer/include/helpers/helpers.php on line 415
Die Fehlermeldung sagt es ja schon
in PHP 8.x.

Was steht denn in Zeile 415 bzgl. $width und $height?
Google doch bitte einmal nach der (Teil-)Fehlermeldung.
Leider bin ich zu wenig in PHP drin um dir sagen zuz können was genau ini PHP 8.x zu 7.x zu machen ist. :(
 

Mausi89

*Mausi*

Ja das weis ich schon. Hab schon den ganzen Nachmittag danach gegoogelt aber nix hat geholfen. Ich Versuch immer erst mal alles über Google zu klären aber irgendwann weis man halt auch mit Google nicht mehr weiter
function wpb_resize( $attach_id = null, $img_url = null, $width, $height, $crop = false ) {
Das ist Zeile 415.
Sorry hab nicht dran gedacht das hier keine Zeilennummern stehen.
 
Zuletzt bearbeitet:

Dagobert68

Nicht mehr ganz neu hier

Moin :)
Versuch mal bitte, den optionalen Parameter $attach_id ganz nach hinten zu stellen. In PHP 8 müssen optionale Parameter in Funktionen hinter den erforderlichen Parametern stehen. Die Fehlermeldung moniert genau das.

So in dieser Art sollte es klappen:
function wpb_resize( $img_url = null, $width, $height, $crop = false, $attach_id = null ) {

Ich drück die Daumen, dass das auch für dich die Lösung ist.

Liebe Grüße,
Tina
 

Mausi89

*Mausi*

Hi,

danke Tina. Ich hab es jetzt ausprobiert mit deiner Lösung. Leider steht dann in meiner "debug.log Datei" jetzt das.
[25-Jan-2023 11:09:46 UTC] PHP Deprecated: Required parameter $width follows optional parameter $img_url in /homepages/4/d325406854/htdocs/wegebau/wp-content/plugins/js_composer/include/helpers/helpers.php on line 415
[25-Jan-2023 11:09:46 UTC] PHP Deprecated: Required parameter $height follows optional parameter $img_url in /homepages/4/d325406854/htdocs/wegebau/wp-content/plugins/js_composer/include/helpers/helpers.php on line 415

Wenn ich das gleiche mache wie mit $attach_id bekomme ich zwar keine Meldung mehr in meiner "debug.log Datei" aber die Webseite hat trotzdem noch die Meldung "Es, gab einen kritischen Fehler auf deiner Website."


An was könnte es den dann noch liegen? Oder muss der Code drunter auch geändert werden?


Danke für eure Hilfe
 

Dagobert68

Nicht mehr ganz neu hier

Wenn ich das gleiche mache wie mit $attach_id bekomme ich zwar keine Meldung mehr in meiner "debug.log Datei" aber die Webseite hat trotzdem noch die Meldung "Es, gab einen kritischen Fehler auf deiner Website."
Moin ;)

OK, es muss grundsätzlich für alle optionalen Parameter so gemacht werden. Das scheint ja auch bei dir zumindest die Meldung bezüglich der Parameter zu beheben.

Aber da es anscheinend um WordPress geht, bin ich dann leider raus. Zu der doch eher unspezifischen Meldung "Es, gab einen kritischen Fehler auf deiner Website." kann ich nichts sagen. Ich hatte nur in meinem handgeschriebenen Uralt-PHP-Code eben auch genau die Meldung mit den optionalen Parametern und da war dann klar, wie man es beheben kann. In WP dürften aber vermutlich noch ganz andere Dinge mit reinspielen und da kenne ich mich überhaupt nicht aus.

Tut mir leid...

Liebe Grüße,
Tina
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.155
Beiträge
2.581.856
Mitglieder
67.222
Neuestes Mitglied
Gregor
Oben