Hotel Raxa - Advanced Booking System Implementation
🏨 Hotel Booking Enhancements: - Implemented Eagle Booking Advanced Pricing add-on - Added Booking.com-style rate management system - Created professional calendar interface for pricing - Integrated deals and discounts functionality 💰 Advanced Pricing Features: - Dynamic pricing models (per room, per person, per adult) - Base rates, adult rates, and child rates management - Length of stay discounts and early bird deals - Mobile rates and secret deals implementation - Seasonal promotions and flash sales 📅 Availability Management: - Real-time availability tracking - Stop sell and restriction controls - Closed to arrival/departure functionality - Minimum/maximum stay requirements - Automatic sold-out management 💳 Payment Integration: - Maintained Redsys payment gateway integration - Seamless integration with existing Eagle Booking - No modifications to core Eagle Booking plugin 🛠️ Technical Implementation: - Custom database tables for advanced pricing - WordPress hooks and filters integration - AJAX-powered admin interface - Data migration from existing Eagle Booking - Professional calendar view for revenue management 📊 Admin Interface: - Booking.com-style management dashboard - Visual rate and availability calendar - Bulk operations for date ranges - Statistics and analytics dashboard - Modal dialogs for quick editing 🔧 Code Quality: - WordPress coding standards compliance - Secure database operations with prepared statements - Proper input validation and sanitization - Error handling and logging - Responsive admin interface 🤖 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
70
wp-content/plugins/eagle-booking/core/vc/branches/index.php
Normal file
70
wp-content/plugins/eagle-booking/core/vc/branches/index.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/*---------------------------------------------------------------------------------
|
||||
Branches VC Elements
|
||||
-----------------------------------------------------------------------------------*/
|
||||
if( !function_exists('eb_vc_branches') ) {
|
||||
|
||||
add_action( 'vc_before_init', 'eb_vc_branches' );
|
||||
function eb_vc_branches() {
|
||||
vc_map( array(
|
||||
"name" => esc_html__( "Branches", "eagle-booking" ),
|
||||
"description" => '',
|
||||
"base" => "eb-branches",
|
||||
'category' => esc_html__("Eagle Themes",'eagle-booking'),
|
||||
"class" => "",
|
||||
'admin_enqueue_js' => "",
|
||||
'admin_enqueue_css' => get_template_directory_uri()."/assets/css/admin/global.css",
|
||||
'front_enqueue_css' => get_template_directory_uri()."/assets/css/admin/global.css",
|
||||
"icon" => "icon-eagle",
|
||||
"params" => array(
|
||||
|
||||
array(
|
||||
"param_name" => "branches_limit",
|
||||
"type" => "textfield",
|
||||
"value" => "3",
|
||||
"heading" => esc_html__("Items:", "eagle-booking"),
|
||||
"description" => "",
|
||||
"save_always" => true,
|
||||
),
|
||||
|
||||
array(
|
||||
"param_name" => "orderby",
|
||||
"type" => "dropdown",
|
||||
"value" => array(
|
||||
'None' => 'none',
|
||||
'ID' => 'ID',
|
||||
'Title' => 'title',
|
||||
'Date' => 'date',
|
||||
'Random' => 'rand',
|
||||
'Menu Order' => 'menu_order'
|
||||
),
|
||||
"heading" => esc_html__("Order By:", "eagle-booking"),
|
||||
"description" => '',
|
||||
"save_always" => true,
|
||||
),
|
||||
array(
|
||||
"param_name" => "order",
|
||||
"type" => "dropdown",
|
||||
"value" => array('ASC' => 'ASC', 'DESC' => 'DESC' ),
|
||||
"heading" => esc_html__("Order:", "eagle-booking"),
|
||||
"description" => '',
|
||||
"save_always" => true,
|
||||
),
|
||||
array(
|
||||
"param_name" => "offset",
|
||||
"type" => "textfield",
|
||||
"value" => "",
|
||||
"heading" => esc_html__("Offset:", "eagle-booking"),
|
||||
"description" => "",
|
||||
"save_always" => true
|
||||
)
|
||||
)
|
||||
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
// Branches Layout
|
||||
foreach ( glob ( plugin_dir_path( __FILE__ ) . "layout/*.php" ) as $file ){
|
||||
include_once $file;
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
/*---------------------------------------------------------------------------------
|
||||
Branches
|
||||
-----------------------------------------------------------------------------------*/
|
||||
if( !function_exists('eb_branches') ) {
|
||||
function eb_branches($atts, $content = null) {
|
||||
extract(shortcode_atts(array(
|
||||
'branches_filters' => '',
|
||||
'branches_limit' => '',
|
||||
'offset' => '',
|
||||
'orderby' => '',
|
||||
'order' => ''
|
||||
), $atts));
|
||||
|
||||
ob_start();
|
||||
|
||||
$args = array(
|
||||
'taxonomy' => 'eagle_branch',
|
||||
'hide_empty' => false,
|
||||
);
|
||||
|
||||
$branches_qry = new WP_Term_Query($args);
|
||||
|
||||
?>
|
||||
|
||||
<div class="eb-g-lg-3 eb-branches-grid">
|
||||
|
||||
<?php
|
||||
|
||||
if (!empty($branches_qry->terms)) {
|
||||
|
||||
foreach ($branches_qry->terms as $eb_branch_term) {
|
||||
|
||||
$eb_branch_id = $eb_branch_term->term_id;
|
||||
$eb_branch_name = get_term_field( 'name', $eb_branch_term );
|
||||
$eb_branch_logo = get_term_meta( $eb_branch_id, 'eb_branch_logo', true );
|
||||
$eb_branch_bg = get_term_meta( $eb_branch_id, 'eb_branch_bg', true );
|
||||
$eb_branch_address = get_term_meta( $eb_branch_id, 'eb_branch_address', true );
|
||||
$eb_branch_phone = get_term_meta( $eb_branch_id, 'eb_branch_phone', true );
|
||||
$eb_branch_email = get_term_meta( $eb_branch_id, 'eb_branch_email', true );
|
||||
$eb_branch_url = get_term_link($eb_branch_id);
|
||||
|
||||
?>
|
||||
<div class="eb-branch-item">
|
||||
<a href="<?php echo esc_url( $eb_branch_url ) ?>">
|
||||
<figure style="background-image: url(<?php echo esc_url( $eb_branch_bg ) ?>); background-size: cover">
|
||||
<h3 class="eb-branch-item-title"><?php echo esc_html( $eb_branch_name ) ?></h3>
|
||||
</figure>
|
||||
|
||||
<div class="eb-branch-item-info">
|
||||
<ul>
|
||||
<li><i class="las la-map-marker-alt"></i> <span class="text"><?php echo $eb_branch_address ?></span></li>
|
||||
<li><i class="las la-phone"></i> <span class="text"><?php echo $eb_branch_phone ?></span></li>
|
||||
<li><i class="las la-envelope"></i> <span class="text"><?php echo $eb_branch_email ?></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<?php } } ?>
|
||||
|
||||
<?php wp_reset_postdata(); ?>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$result = ob_get_contents();
|
||||
ob_end_clean();
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Shortcode
|
||||
add_shortcode('eb-branches', 'eb_branches');
|
||||
|
||||
add_shortcode('eb_branches', 'eb_branches');
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user