我正在尝试创建一个自定义的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
}
您可以将类型传送
一个字符串
(或其他任何内容)到数组
,如下所示:
$course_link = (array) $course_link;
因此,在函数中,可以编辑第四行:
$course_link = (array) get_post_permalink( $settings['training'] );
或者说第八行是这样的:
$this->add_link_attributes( 'button', (array) $course_link );
在这里你可以读到更多