提问者:小点点

类型必须为array,给定字符串


我正在尝试创建一个自定义的elementor小部件; 但是,add_link_attributes似乎不支持链接的字符串。 弹出以下错误:

Must be of the type array, string given

如何将这个保存在$Course_Link turn中的字符串转换为“The type Array”?

protected function render() {
        $settings = $this->get_settings_for_display();
        $current_user = wp_get_current_user();
        $course_link = get_post_permalink( $settings['training']); 

        $this->add_render_attribute( 'wrapper', 'class', 'elementor-button-wrapper' );

        //Als gebruiker géén toegang heeft tot de training plaats saleslink
        if (get_user_meta( $current_user->ID, 'course_' . $settings['training'] . '_access_from' , true ) || current_user_can('administrator')) {
            $this->add_link_attributes( 'button', $course_link );
            $this->add_render_attribute( 'button', 'class', 'elementor-button-link' );          
        }
        elseif ( ! empty( $settings['sales-link']['url'] ) && !get_user_meta( $current_user->ID, 'course_' . $settings['training'] . '_access_from' , true )) { 
            $this->add_link_attributes( 'button', $settings['sales-link'] );
            $this->add_render_attribute( 'button', 'class', 'elementor-button-link' );
        }

        if ( ! empty( $settings['size'] ) ) {
            $this->add_render_attribute( 'button', 'class', 'elementor-size-' . $settings['size'] );
        }

        $this->add_render_attribute( 'button', 'class', 'elementor-button' );
        $this->add_render_attribute( 'button', 'role', 'button' );

        if ( $settings['hover_animation'] ) {
            $this->add_render_attribute( 'button', 'class', 'elementor-animation-' . $settings['hover_animation'] );
        }

        ?>
        <div <?php echo $this->get_render_attribute_string( 'wrapper' ); ?>>
            <a <?php echo $this->get_render_attribute_string( 'button' ); ?>>
                <?php $this->render_text(); ?>
            </a>
        </div>
        <?php 
    }

共1个答案

匿名用户

您可以将类型传送一个字符串(或其他任何内容)到数组,如下所示:

$course_link = (array) $course_link;

因此,在函数中,可以编辑第四行:

$course_link = (array) get_post_permalink( $settings['training'] );

或者说第八行是这样的:

$this->add_link_attributes( 'button', (array) $course_link );

在这里你可以读到更多