<?php /** * Hook functions. * * @package opalestate * @author Opal Team <info@wpopal.com > */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Register widget area. * * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar */ function opalestate_widgets_init() { register_sidebar( [ 'name' => esc_html__( 'Single Property Sidebar', 'opalestate-pro' ), 'id' => 'opalestate-single-property', 'description' => esc_html__( 'Add widgets here to appear in your single property sidebar area.', 'opalestate-pro' ), 'before_widget' => '<div id="%1$s" class="widget opalestate-single-property-widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h5 class="widget-title">', 'after_title' => '</h5>', ] ); } add_action( 'widgets_init', 'opalestate_widgets_init' ); /** * Add hidden multilingual. */ function opalestate_add_hidden_multilingual() { if ( ! opalestate_running_on_multilanguage() ) { return; } ?> <input type="hidden" name="lang" value="<?php echo opalestate_multilingual()->get_current_language(); ?>"> <?php } add_action( 'opalestate_after_search_properties_form', 'opalestate_add_hidden_multilingual' ); /** * Clean cron jobs when saving settings. * * @param $old_value * @param $value */ function opalestate_clean_cron_jobs( $old_value, $value ) { $update_schedule = isset( $value['schedule'] ) ? $value['schedule'] : 0; $old_schedule = isset( $old_value['schedule'] ) ? $old_value['schedule'] : 0; if ( $update_schedule !== $old_schedule ) { wp_clear_scheduled_hook( 'opalestate_clean_update' ); if ( $update_schedule ) { add_filter( 'cron_schedules', [ Opalestate_Install::class, 'cron_schedules' ] ); if ( ! wp_next_scheduled( 'opalestate_clean_update' ) ) { wp_schedule_event( time(), 'opalestate_corn', 'opalestate_clean_update' ); } } } } add_action( 'update_option_opalestate_settings', 'opalestate_clean_cron_jobs', 10, 2 ); /** * Clean update. */ function opalestate_clean_update() { try { $query = new WP_Query( [ 'post_type' => 'attachment', 'post_status' => 'inherit', 'date_query' => [ 'column' => 'post_date', 'before' => date( 'Y-m-d', strtotime( '-1 days' ) ), ], 'meta_query' => [ [ 'key' => '_pending_to_use_', 'value' => 1, 'compare' => '>=', ], ], ] ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); wp_delete_attachment( get_the_ID() ); } } wp_reset_postdata(); // Change status expired properties. $expired_query = new WP_Query( [ 'post_type' => 'opalestate_property', 'post_status' => [ 'pending', 'publish' ], 'meta_query' => [ [ 'key' => OPALESTATE_PROPERTY_PREFIX . 'expired_time', 'value' => time(), 'compare' => '<', 'type' => 'NUMERIC', ], ], ] ); opalestate_write_log($expired_query->found_posts); if ( $expired_query->have_posts() ) { while ( $expired_query->have_posts() ) { $expired_query->the_post(); opalestate_write_log(get_the_ID()); wp_update_post( [ 'ID' => get_the_ID(), 'post_status' => 'expired', ] ); } } wp_reset_postdata(); } catch ( Exception $e ) { opalestate_write_log( $e->getMessage() ); } } add_action( 'opalestate_clean_update', 'opalestate_clean_update' );