【问题标题】:How to display post name and post link in elementor SELECT2 control如何在elementor SELECT2控件中显示帖子名称和帖子链接
【发布时间】:2021-07-17 09:11:46
【问题描述】:

我在此创建了一个元素控件,我已经显示了所有帖子列表,但是当我在 protected function render() 中显示帖子标题时,它显示帖子 ID 而不是帖子名称,我想显示帖子名称并且还想获得永久链接<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

    }


    

}

【问题讨论】:

  • 你能解决@Bhautik

标签: php wordpress wordpress-theming elementor


【解决方案1】:

所以你想获得所有自定义post_type'digital_card'中的所有IDs 和post_titles?!您不需要$keyget_the_title() 来获取控件类型Controls_Manager::SELECT2 的选项的值。如果您希望在编辑器面板中选择全宽,您可以设置'label_block' =&gt; 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,      
    ]
);

所以现在所选帖子的IDs 将保存在控制数据posts中。

要显示post_titles 和相关帖子的链接,您可以通过帖子的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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多