PluginProbe
UiCore Elements – Free widgets and templates for Elementor / 1.2.3
UiCore Elements – Free widgets and templates for Elementor v1.2.3
1.3.17 1.3.16 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 All 41 releases
uicore-elements / includes / widgets / theme-builder / post-meta.php

post-meta.php in UiCore Elements – Free widgets and templates for Elementor 1.2.3, at includes/widgets/theme-builder/post-meta.php

164 lines 4.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace UiCoreElements\Widgets\ThemeBuilder;
3
4 use UiCoreElements\UiCoreWidget;
5 use Elementor\Controls_Manager;
6 use UiCoreElements\Utils\Meta_Trait;
7
8 defined('ABSPATH') || exit();
9
10 /**
11 * The Title widget.
12 *
13 * @since 1.0.0
14 */
15 class PostMeta extends UiCoreWidget {
16
17 use Meta_Trait;
18
19 public function get_name() {
20 return 'uicore-post-meta';
21 }
22 public function get_title() {
23 return esc_html__( 'Post Meta', 'uicore-elements' );
24 }
25 public function get_icon() {
26 return 'eicon-post-info ui-e-widget';
27 }
28 public function get_categories() {
29 return ['uicore', 'uicore-theme-builder' ];
30 }
31
32 public function get_styles() {
33 return [ 'post-meta' ];
34 }
35 public function get_scripts() {
36 return [];
37 }
38 public function get_keywords() {
39 return [ 'post', 'meta', 'info' ];
40 }
41 public function has_widget_inner_wrapper(): bool {
42 // TODO: remove after 3.30, when the full deprecation of widget innet wrapper is ready
43 return ! \Elementor\Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' );
44 }
45
46 protected function register_controls() {
47 $this->start_controls_section(
48 'section_content',
49 [
50 'label' => esc_html__( 'Content', 'uicore-elements' ),
51 ]
52 );
53
54 $this->add_control('meta_list',[
55 'label' => esc_html__( 'Meta Data', 'uicore-elements' ),
56 'type' => \Elementor\Controls_Manager::REPEATER,
57 'fields' => $this->get_meta_content_controls(),
58 'default' => [
59 [
60 'type' => 'author'
61 ],
62 ],
63 'title_field' => '<span style="text-transform: capitalize">{{{ type }}}</span>',
64 'prevent_empty' => false,
65 'separator'=> 'before'
66 ]
67 );
68 $this->add_responsive_control('content_align',
69 [
70 'label' => esc_html__( 'Content Alignment', 'uicore-elements' ),
71 'type' => Controls_Manager::CHOOSE,
72 'options' => [
73 'left' => [
74 'title' => esc_html__( 'Left', 'uicore-elements' ),
75 'icon' => 'eicon-text-align-left',
76 ],
77 'center' => [
78 'title' => esc_html__( 'Center', 'uicore-elements' ),
79 'icon' => 'eicon-text-align-center',
80 ],
81 ],
82 'selectors' => [
83 '{{WRAPPER}}' => 'text-align: {{VALUE}};',
84 ],
85 ]
86 );
87 $this->end_controls_section();
88
89 $this->start_controls_section(
90 'section_meta_style',
91 [
92 'label' => esc_html__( 'Style', 'uicore-elements' ),
93 'tab' => Controls_Manager::TAB_STYLE,
94 ]
95 );
96 $this->get_meta_style_controls();
97 $this->end_controls_section();
98
99 }
100
101 /**
102 * Match each meta icon size (if SVG) with the correspondent font size set by the user.
103 *
104 * Based on the post component similar function.
105 */
106 function set_meta_font_size_to_svg()
107 {
108 // Required specifically for SVG icons
109 if( \Elementor\Plugin::$instance->experiments->is_feature_active('e_font_icon_svg') == false ){
110 return;
111 }
112
113 $size = $this->get_option_size(
114 'tb-meta_meta_typography_font_size',
115 ['size' => 16, 'unit' => 'px'],
116 true
117 );
118
119 // Creates the css variable
120 $metas_css = '--post_meta-font-size: ' . esc_html($size) . ';';
121
122 // print it on the main widget wrapper
123 $this->add_render_attribute(
124 '_wrapper',
125 'style',
126 $metas_css
127 );
128 }
129
130 protected function render() {
131
132 if( !\Elementor\Plugin::$instance->editor->is_edit_mode() ) {
133 $title = wp_title(null,false);
134 $title = $title ? $title : get_bloginfo('name');
135 }else{
136 $title = __( 'This is a dummy title.', 'uicore-elements' );
137 }
138
139 $this->set_meta_font_size_to_svg();
140
141 $meta_list = $this->get_settings_for_display( 'meta_list' );
142 if(!isset($meta_list[0]) || $meta_list[0]['type'] == ''){
143 return;
144 }
145
146 echo '<div class="ui-e-post-meta ui-e-tb-meta">';
147 foreach ($meta_list as $meta) {
148 if($meta['type'] != 'none'){
149 $this->display_meta($meta);
150
151 if( next( $meta_list ) && $this->get_settings_for_display( 'tb-meta_meta_separator' ) ) {
152 echo '<span class="ui-e-separator">'.esc_html($this->get_settings_for_display('tb-meta_meta_separator' )).'</span>';
153 }
154 }
155 }
156 echo '</div>';
157
158 }
159
160 protected function content_template() {
161 }
162 }
163 \Elementor\Plugin::instance()->widgets_manager->register(new PostMeta());
164