| Server IP : 198.38.94.67 / Your IP : 216.73.217.178 Web Server : LiteSpeed System : Linux d6054.dxb1.stableserver.net 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 9 04:57:09 EDT 2025 x86_64 User : azfilmst ( 1070) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/azfilmst/public_html/wp-content/plugins/haru-frames/includes/widgets/ |
Upload File : |
<?php
/**
* @package HaruTheme/Haru Frames
* @version 1.0.0
* @author Administrator <admin@harutheme.com>
* @copyright Copyright (c) 2017, HaruTheme
* @license http://opensource.org/licenses/gpl-2.0.php GPL v2 or later
* @link http://harutheme.com
*/
namespace Haru_Frames\Widgets;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
use \Elementor\Widget_Base;
use \Elementor\Controls_Manager;
use \Elementor\Group_Control_Background;
use \Elementor\Group_Control_Border;
use \Elementor\Group_Control_Box_Shadow;
use \Elementor\Group_Control_Image_Size;
use \Elementor\Group_Control_Typography;
use \Elementor\Utils;
use \Elementor\Plugin;
use \Haru_Frames\Classes\Helper as ControlsHelper;
use \Haru_Frames\Classes\Haru_Template;
if ( ! class_exists( 'Haru_Frames_Menu_Post_Widget' ) ) {
class Haru_Frames_Menu_Post_Widget extends Widget_Base {
public function get_name() {
return 'haru-menu-post';
}
public function get_title() {
return esc_html__( 'Haru Menu Post', 'haru-frames' );
}
public function get_icon() {
return 'eicon-slides';
}
public function get_categories() {
return [ 'haru-elements' ];
}
public function get_keywords() {
return [
'post',
'posts',
'list',
'menu post',
'menu posts',
'blog post',
'article',
'custom posts',
'content views',
'blog view',
'content marketing',
'blogger',
];
}
public function get_custom_help_url() {
return 'https://document.harutheme.com/elementor/';
}
protected function register_controls() {
$post_types = array();
$post_types['post'] = __( 'Posts', 'haru-frames' );
$post_types['by_id'] = __( 'Manual Selection', 'haru-frames' );
$taxonomies = get_taxonomies([], 'objects');
$this->start_controls_section(
'content_section',
[
'label' => esc_html__( 'Content', 'haru-frames' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'pre_style',
[
'label' => __( 'Pre Post', 'haru-frames' ),
'description' => __( 'If you choose Pre Post you will use Style default from our theme.', 'haru-frames' ),
'type' => Controls_Manager::SELECT,
'default' => 'list-small',
'options' => [
'list-small' => __( 'List Small', 'haru-frames' ),
]
]
);
$this->add_control(
'post_type',
[
'label' => __( 'Source', 'haru-frames' ),
'type' => Controls_Manager::SELECT,
'options' => $post_types,
'default' => key($post_types),
]
);
$this->add_control(
'posts_ids',
[
'label' => __( 'Search & Select', 'haru-frames' ),
'type' => Controls_Manager::SELECT2,
'options' => ControlsHelper::get_post_list(),
'label_block' => true,
'multiple' => true,
'condition' => [
'post_type' => 'by_id',
],
]
);
$this->add_control(
'authors', [
'label' => __( 'Author', 'haru-frames' ),
'label_block' => true,
'type' => Controls_Manager::SELECT2,
'multiple' => true,
'default' => [],
'options' => ControlsHelper::get_authors_list(),
'options' => array(),
'condition' => [
'post_type!' => ['by_id'],
],
]
);
foreach ($taxonomies as $taxonomy => $object) {
if ( ( ! isset( $object->object_type[0] ) ) || ( ! in_array( $object->object_type[0], array_keys($post_types) ) ) ) {
continue;
}
$this->add_control(
$taxonomy . '_ids',
[
'label' => $object->label,
'type' => Controls_Manager::SELECT2,
'label_block' => true,
'multiple' => true,
'object_type' => $taxonomy,
'options' => wp_list_pluck( get_terms( $taxonomy ), 'name', 'term_id' ),
'condition' => [
'post_type' => $object->object_type,
],
]
);
}
$this->add_control(
'post__not_in',
[
'label' => __( 'Exclude', 'haru-frames' ),
'type' => Controls_Manager::SELECT2,
'options' => ControlsHelper::get_post_list(),
'label_block' => true,
'post_type' => '',
'multiple' => true,
'condition' => [
'post_type!' => ['by_id'],
],
]
);
$this->add_control(
'posts_per_page',
[
'label' => __( 'Posts Per Page', 'haru-frames' ),
'type' => Controls_Manager::NUMBER,
'default' => '4',
]
);
$this->add_control(
'offset',
[
'label' => __( 'Offset', 'haru-frames' ),
'type' => Controls_Manager::NUMBER,
'default' => '0',
]
);
$this->add_control(
'orderby',
[
'label' => __( 'Order By', 'haru-frames' ),
'type' => Controls_Manager::SELECT,
'options' => ControlsHelper::get_post_orderby_options(),
'default' => 'date',
]
);
$this->add_control(
'order',
[
'label' => __( 'Order', 'haru-frames' ),
'type' => Controls_Manager::SELECT,
'options' => [
'asc' => 'Ascending',
'desc' => 'Descending',
],
'default' => 'desc',
]
);
$this->add_control(
'el_class',
[
'label' => __( 'CSS Classes', 'haru-frames' ),
'type' => Controls_Manager::TEXT,
'default' => '',
'title' => __( 'Add your custom class WITHOUT the dot. e.g: my-class', 'haru-frames' ),
]
);
$this->end_controls_section();
$this->start_controls_section(
'layout_section',
[
'label' => esc_html__( 'Layout Options', 'haru-frames' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'background_dark',
[
'label' => __( 'Background Dark', 'haru-frames' ),
'type' => Controls_Manager::SWITCHER,
'description' => __( 'Enable if use for section has background dark.', 'haru-frames' ),
'default' => 'no',
'return_value' => 'yes',
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
$this->add_render_attribute( 'post', 'class', 'haru-menu-post' );
$this->add_render_attribute( 'post', 'class', 'haru-menu-post--' . $settings['pre_style'] );
$this->add_render_attribute( 'post', 'id', 'haru-menu-post' . rand() );
if ( ! empty( $settings['el_class'] ) ) {
$this->add_render_attribute( 'post', 'class', $settings['el_class'] );
}
?>
<?php if ( Plugin::$instance->editor->is_edit_mode() || Plugin::$instance->preview->is_preview_mode() ) : ?>
<div class="haru-notice"><?php echo esc_html__( 'Please note layout or action may doesn\'t works on Preview Mode or Editor Mode but works fine on Frontend Mode.', 'haru-frames' ); ?></div>
<?php endif; ?>
<?php if ( 'yes' == $settings['background_dark'] ) : ?>
<div class="background-dark">
<?php endif; ?>
<div <?php echo $this->get_render_attribute_string( 'post' ); ?>>
<?php echo Haru_Template::haru_get_template( 'menu-post/menu-post.php', $settings ); ?>
</div>
<?php if ( 'yes' == $settings['background_dark'] ) : ?>
</div>
<?php endif; ?>
<?php
}
}
}