🏨 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>
172 lines
8.7 KiB
PHP
172 lines
8.7 KiB
PHP
<?php
|
||
/**
|
||
* Title: Events list
|
||
* Slug: twentytwentyfive/cta-events-list
|
||
* Categories: call-to-action
|
||
* Description: A list of events with call to action.
|
||
*
|
||
* @package WordPress
|
||
* @subpackage Twenty_Twenty_Five
|
||
* @since Twenty Twenty-Five 1.0
|
||
*/
|
||
|
||
?>
|
||
<!-- wp:group {"align":"full","style":{"spacing":{"padding":{"top":"var:preset|spacing|50","bottom":"var:preset|spacing|50"},"margin":{"top":"0","bottom":"0"}}},"layout":{"type":"constrained"}} -->
|
||
<div class="wp-block-group alignfull" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50)">
|
||
<!-- wp:group {"align":"wide","layout":{"type":"default"}} -->
|
||
<div class="wp-block-group alignwide">
|
||
<!-- wp:heading -->
|
||
<h2 class="wp-block-heading"><?php esc_html_e( 'Upcoming events', 'twentytwentyfive' ); ?></h2>
|
||
<!-- /wp:heading -->
|
||
|
||
<!-- wp:paragraph -->
|
||
<p><?php esc_html_e( 'These are some of the upcoming events', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
|
||
<!-- wp:group {"style":{"spacing":{"blockGap":"0","margin":{"top":"var:preset|spacing|70"}}},"layout":{"type":"default"}} -->
|
||
<div class="wp-block-group" style="margin-top:var(--wp--preset--spacing--70)">
|
||
<!-- wp:group {"style":{"spacing":{"padding":{"top":"var:preset|spacing|40","bottom":"var:preset|spacing|40"}}},"layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
|
||
<div class="wp-block-group" style="padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40)">
|
||
<!-- wp:group {"layout":{"type":"constrained"}} -->
|
||
<div class="wp-block-group">
|
||
<!-- wp:heading {"level":3} -->
|
||
<h3 class="wp-block-heading"><?php esc_html_e( 'Tell your story', 'twentytwentyfive' ); ?></h3>
|
||
<!-- /wp:heading -->
|
||
|
||
<!-- wp:paragraph -->
|
||
<p><?php esc_html_e( 'Atlanta, GA, USA', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
|
||
<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|70"}},"layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
|
||
<div class="wp-block-group">
|
||
<!-- wp:paragraph {"style":{"typography":{"textTransform":"uppercase"}}} -->
|
||
<p style="text-transform:uppercase"><?php echo esc_html_x( 'Mon, Jan 1', 'Example event date in pattern.', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
|
||
<!-- wp:buttons -->
|
||
<div class="wp-block-buttons">
|
||
<!-- wp:button {"fontSize":"small"} -->
|
||
<div class="wp-block-button has-custom-font-size has-small-font-size"><a class="wp-block-button__link wp-element-button"><?php esc_html_e( 'Buy Tickets', 'twentytwentyfive' ); ?></a></div>
|
||
<!-- /wp:button -->
|
||
</div>
|
||
<!-- /wp:buttons -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
|
||
<!-- wp:group {"style":{"spacing":{"padding":{"top":"var:preset|spacing|40","bottom":"var:preset|spacing|40"}},"border":{"top":{"color":"var:preset|color|accent-6","width":"1px"}}},"layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
|
||
<div class="wp-block-group" style="border-top-color:var(--wp--preset--color--accent-6);border-top-width:1px;padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40)"><!-- wp:group {"layout":{"type":"constrained"}} -->
|
||
<div class="wp-block-group">
|
||
<!-- wp:heading {"level":3} -->
|
||
<h3 class="wp-block-heading">
|
||
<?php
|
||
echo wp_kses_post(
|
||
/* translators: This string contains the word "Stories" in four different languages with the first item in the locale's language. */
|
||
_x( '“Stories, <span lang="es">historias</span>, <span lang="uk">iсторії</span>, <span lang="el">iστορίες</span>”', 'Placeholder heading in four languages.', 'twentytwentyfive' )
|
||
);
|
||
?>
|
||
</h3>
|
||
<!-- /wp:heading -->
|
||
|
||
<!-- wp:paragraph -->
|
||
<p><?php esc_html_e( 'Mexico City, Mexico', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
|
||
<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|70"}},"layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
|
||
<div class="wp-block-group">
|
||
<!-- wp:paragraph {"style":{"typography":{"textTransform":"uppercase"}}} -->
|
||
<p style="text-transform:uppercase"><?php echo esc_html_x( 'Mon, Jan 1', 'Example event date in pattern.', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
|
||
<!-- wp:buttons -->
|
||
<div class="wp-block-buttons">
|
||
<!-- wp:button {"fontSize":"small"} -->
|
||
<div class="wp-block-button has-custom-font-size has-small-font-size"><a class="wp-block-button__link wp-element-button"><?php esc_html_e( 'Buy Tickets', 'twentytwentyfive' ); ?></a></div>
|
||
<!-- /wp:button -->
|
||
</div>
|
||
<!-- /wp:buttons -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
|
||
<!-- wp:group {"style":{"spacing":{"padding":{"top":"var:preset|spacing|40","bottom":"var:preset|spacing|40"}},"border":{"top":{"color":"var:preset|color|accent-6","width":"1px"}}},"layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
|
||
<div class="wp-block-group" style="border-top-color:var(--wp--preset--color--accent-6);border-top-width:1px;padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40)"><!-- wp:group {"layout":{"type":"constrained"}} -->
|
||
<div class="wp-block-group">
|
||
<!-- wp:heading {"level":3} -->
|
||
<h3 class="wp-block-heading"><?php esc_html_e( 'Tell your story', 'twentytwentyfive' ); ?></h3>
|
||
<!-- /wp:heading -->
|
||
|
||
<!-- wp:paragraph -->
|
||
<p><?php esc_html_e( 'Thornville, OH, USA', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
|
||
<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|70"}},"layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
|
||
<div class="wp-block-group">
|
||
<!-- wp:paragraph {"style":{"typography":{"textTransform":"uppercase"}}} -->
|
||
<p style="text-transform:uppercase"><?php echo esc_html_x( 'Mon, Jan 1', 'Example event date in pattern.', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
|
||
<!-- wp:buttons -->
|
||
<div class="wp-block-buttons">
|
||
<!-- wp:button {"fontSize":"small"} -->
|
||
<div class="wp-block-button has-custom-font-size has-small-font-size"><a class="wp-block-button__link wp-element-button"><?php esc_html_e( 'Buy Tickets', 'twentytwentyfive' ); ?></a></div>
|
||
<!-- /wp:button -->
|
||
</div>
|
||
<!-- /wp:buttons -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
|
||
<!-- wp:group {"style":{"spacing":{"padding":{"top":"var:preset|spacing|40","bottom":"var:preset|spacing|40"}},"border":{"top":{"color":"var:preset|color|accent-6","width":"1px"}}},"layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
|
||
<div class="wp-block-group" style="border-top-color:var(--wp--preset--color--accent-6);border-top-width:1px;padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40)"><!-- wp:group {"layout":{"type":"constrained"}} -->
|
||
<div class="wp-block-group">
|
||
<!-- wp:heading {"level":3} -->
|
||
<h3 class="wp-block-heading">
|
||
<?php
|
||
echo wp_kses_post(
|
||
/* translators: This string contains the word "Stories" in four different languages with the first item in the locale's language. */
|
||
_x( '“Stories, <span lang="es">historias</span>, <span lang="uk">iсторії</span>, <span lang="el">iστορίες</span>”', 'Placeholder heading in four languages.', 'twentytwentyfive' )
|
||
);
|
||
?>
|
||
</h3>
|
||
<!-- /wp:heading -->
|
||
|
||
<!-- wp:paragraph -->
|
||
<p><?php esc_html_e( 'Thornville, OH, USA', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
|
||
<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|70"}},"layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
|
||
<div class="wp-block-group">
|
||
<!-- wp:paragraph {"style":{"typography":{"textTransform":"uppercase"}}} -->
|
||
<p style="text-transform:uppercase"><?php echo esc_html_x( 'Mon, Jan 1', 'Example event date in pattern.', 'twentytwentyfive' ); ?></p>
|
||
<!-- /wp:paragraph -->
|
||
|
||
<!-- wp:buttons -->
|
||
<div class="wp-block-buttons">
|
||
<!-- wp:button {"fontSize":"small"} -->
|
||
<div class="wp-block-button has-custom-font-size has-small-font-size"><a class="wp-block-button__link wp-element-button"><?php esc_html_e( 'Buy Tickets', 'twentytwentyfive' ); ?></a></div>
|
||
<!-- /wp:button -->
|
||
</div>
|
||
<!-- /wp:buttons -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
</div>
|
||
<!-- /wp:group -->
|
||
</div>
|
||
<!-- /wp:group -->
|