136 lines
3.4 KiB
PHP
Executable File
136 lines
3.4 KiB
PHP
Executable File
<?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' );
|