php - 必须是数组类型,字符串给定

标签 php wordpress elementor

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

Must be of the type array, string given

如何将保存在 $course_link 中的这个字符串变成“类型数组”?

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 
    }

最佳答案

你可以像这样类型转换一个字符串(或其他)到一个数组:

$course_link = (array) $course_link;

因此,在您的函数中,您可以将第四行编辑为:

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

或者第八行:

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

在这里您可以阅读more

关于php - 必须是数组类型,字符串给定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62536502/

相关文章:

java - 使用 gson 反序列化 JSON 对象数组时遇到问题

php - WP_Widget 的被调用构造方法自版本 4.3.0 起已弃用

php - WordPress、HTML\\如何在特定页面的<head>区域插入&lt;meta&gt;标签

wordpress - 无法连接到文件系统。请确认您的凭据

css - 使用 CSS 自定义菜单样式

php - IIS、MS SQL 和 PHP - PHP 中的 SQL 选择不起作用

PHP 6 全局变量已弃用?

css - Wordpress 子主题 CSS 规则显示 :none gets overriden

javascript - 检查某些Web资源是否存在于服务器端或客户端更好?

php - Laravel http 请求 : Cannot run multiple request