如何在elementor SELECT2控件中显示post名称和postlink
How to display post name and post link in elementor SELECT2 control
我在其中创建了一个元素控件我已经显示了所有 posts 列表但是当我在 protected function render()
中显示 post 标题时它显示 post ID不是 post 名称,我想显示 post 名称,还想在 <a href="<?php the_permalink(); ?>">Read More</a>
中获取 post 的永久链接
$options = array();
$posts = get_posts( array(
'post_type' => 'digital_card'
) );
foreach ( $posts as $key => $post ) {
$options[$post->ID] = get_the_title($post->ID);
}
$this->add_control(
'post_name',
[
'label' => __( 'Select Posts', 'plugin-domain' ),
'label_block' => ('bool'),
'type' => \Elementor\Controls_Manager::SELECT,
'multiple' => true,
'options' => $options,
]
);
protected function render() {
$settings = $this->get_settings();
$show_title = $settings['post_name'];
?>
<?php echo $show_title; ?>
<a href="<?php the_permalink(); ?>">Read More</a>
<?php
}
}
所以您想要获取所有自定义 post_type
'digital_card' 的所有 ID
和 post_title
?!您不需要 $key
和 get_the_title()
来获取控件类型 Controls_Manager::SELECT2
的选项的值。如果您希望编辑器面板中的选择字段全宽,您可以设置 'label_block' => true
。
protected function _register_controls()
内的部分:
$options = [];
$posts = get_posts( [
'post_type' => 'digital_card'
] );
foreach ( $posts as $post ) {
$options[ $post->ID ] = $post->post_title;
}
$this->add_control(
'posts',
[
'label' => __( 'Select Posts', 'your-plugin-domain' ),
'type' => \Elementor\Controls_Manager::SELECT2,
'label_block' => true,
'multiple' => true,
'options' => $options,
]
);
所以现在选中的post中的ID
会保存在控制数据posts
中。
要将 post_title
和 link 显示到相关的 post,您可以通过 post 的 ID
获取值,作为数组存储在 $settings['posts']
中。
protected function render()
内的部分:
$settings = $this->get_settings();
$posts = $settings[ 'posts' ];
foreach( $posts as $post ) {
echo get_the_title( $post );
?>
<a href="<?php echo get_permalink( $post ); ?>">Read More</a>
<?php
}
我在其中创建了一个元素控件我已经显示了所有 posts 列表但是当我在 protected function render()
中显示 post 标题时它显示 post ID不是 post 名称,我想显示 post 名称,还想在 <a href="<?php the_permalink(); ?>">Read More</a>
$options = array();
$posts = get_posts( array(
'post_type' => 'digital_card'
) );
foreach ( $posts as $key => $post ) {
$options[$post->ID] = get_the_title($post->ID);
}
$this->add_control(
'post_name',
[
'label' => __( 'Select Posts', 'plugin-domain' ),
'label_block' => ('bool'),
'type' => \Elementor\Controls_Manager::SELECT,
'multiple' => true,
'options' => $options,
]
);
protected function render() {
$settings = $this->get_settings();
$show_title = $settings['post_name'];
?>
<?php echo $show_title; ?>
<a href="<?php the_permalink(); ?>">Read More</a>
<?php
}
}
所以您想要获取所有自定义 post_type
'digital_card' 的所有 ID
和 post_title
?!您不需要 $key
和 get_the_title()
来获取控件类型 Controls_Manager::SELECT2
的选项的值。如果您希望编辑器面板中的选择字段全宽,您可以设置 'label_block' => true
。
protected function _register_controls()
内的部分:
$options = [];
$posts = get_posts( [
'post_type' => 'digital_card'
] );
foreach ( $posts as $post ) {
$options[ $post->ID ] = $post->post_title;
}
$this->add_control(
'posts',
[
'label' => __( 'Select Posts', 'your-plugin-domain' ),
'type' => \Elementor\Controls_Manager::SELECT2,
'label_block' => true,
'multiple' => true,
'options' => $options,
]
);
所以现在选中的post中的ID
会保存在控制数据posts
中。
要将 post_title
和 link 显示到相关的 post,您可以通过 post 的 ID
获取值,作为数组存储在 $settings['posts']
中。
protected function render()
内的部分:
$settings = $this->get_settings();
$posts = $settings[ 'posts' ];
foreach( $posts as $post ) {
echo get_the_title( $post );
?>
<a href="<?php echo get_permalink( $post ); ?>">Read More</a>
<?php
}