Add files via upload
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# Vincent's Under Construction
|
||||
|
||||
A simple WordPress plugin that allows you to display an under construction page while your site is being developed or updated.
|
||||
|
||||
## Description
|
||||
|
||||
Vincent's Under Construction is a lightweight WordPress plugin that enables you to easily set up an "under construction" or "coming soon" page for your website. When activated, it redirects all non-logged-in users to a specified page, allowing you to work on your site without interruption.
|
||||
|
||||
## Features
|
||||
|
||||
- Easy to use admin interface
|
||||
- Select any page as your under construction page
|
||||
- Redirect all non-logged-in users to the under construction page
|
||||
- Logged-in users can still access the entire site
|
||||
- Settings link directly from the plugins page
|
||||
|
||||
## Installation
|
||||
|
||||
1. Download the plugin zip file
|
||||
2. Log in to your WordPress admin panel
|
||||
3. Go to Plugins > Add New
|
||||
4. Click on the "Upload Plugin" button
|
||||
5. Upload the zip file you downloaded
|
||||
6. Activate the plugin through the 'Plugins' menu in WordPress
|
||||
|
||||
## Usage
|
||||
|
||||
1. After activation, go to the "Under Construction" menu item in your WordPress admin panel
|
||||
2. Check the box to enable the under construction mode
|
||||
3. Select the page you want to use as your under construction page from the dropdown menu
|
||||
4. Save your settings
|
||||
|
||||
## Requirements
|
||||
|
||||
- WordPress 4.0 or higher
|
||||
- PHP 5.6 or higher
|
||||
|
||||
## Frequently Asked Questions
|
||||
|
||||
**Q: Can logged-in users see the full site?**
|
||||
A: Yes, logged-in users will have full access to the site.
|
||||
|
||||
**Q: Can I customize the under construction page?**
|
||||
A: Yes, you can create and design any page in WordPress and set it as your under construction page.
|
||||
|
||||
## Changelog
|
||||
|
||||
### 1.1
|
||||
- Added success alerts when settings are saved
|
||||
- Improved settings sanitization
|
||||
- Added settings link on plugins page
|
||||
|
||||
### 1.0
|
||||
- Initial release
|
||||
|
||||
## Support
|
||||
|
||||
For support, feature requests, or bug reports, please open an issue on the [GitHub repository](https://github.com/your-github-username/vincents-under-construction).
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the GPL v2 or later.
|
||||
|
||||
## Author
|
||||
|
||||
Vincent Rozenberg
|
||||
- Website: [https://vincentrozenberg.com](https://vincentrozenberg.com)
|
||||
- GitHub: [@vincentrozenberg](https://github.com/vincentrozenberg)
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Please feel free to submit a Pull Request.
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
/*
|
||||
Plugin Name: Vincent's Under Construction
|
||||
Description: Displays an under construction page when activated.
|
||||
Version: 1.1
|
||||
Author: Vincent Rozenberg
|
||||
Author URI: https://vincentrozenberg.com
|
||||
*/
|
||||
|
||||
// Add admin menu
|
||||
function suc_add_admin_menu() {
|
||||
add_menu_page('Under Construction', 'Under Construction', 'manage_options', 'simple-under-construction', 'suc_admin_page');
|
||||
}
|
||||
add_action('admin_menu', 'suc_add_admin_menu');
|
||||
|
||||
// Create admin page
|
||||
function suc_admin_page() {
|
||||
$options = get_option('suc_settings');
|
||||
?>
|
||||
<div class="wrap">
|
||||
<h1>Under Construction Settings</h1>
|
||||
<?php
|
||||
// Display settings updated message
|
||||
if (isset($_GET['settings-updated'])) {
|
||||
?>
|
||||
<div class="notice notice-success is-dismissible">
|
||||
<p><strong>Settings saved.</strong></p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<form method="post" action="options.php">
|
||||
<?php
|
||||
settings_fields('suc_settings_group');
|
||||
do_settings_sections('simple-under-construction');
|
||||
submit_button();
|
||||
?>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
// Register settings
|
||||
function suc_register_settings() {
|
||||
register_setting('suc_settings_group', 'suc_settings', 'suc_sanitize_settings');
|
||||
add_settings_section('suc_main_section', 'Main Settings', null, 'simple-under-construction');
|
||||
|
||||
add_settings_field('suc_enabled', 'Enable Under Construction', 'suc_enabled_callback', 'simple-under-construction', 'suc_main_section');
|
||||
add_settings_field('suc_page', 'Under Construction Page', 'suc_page_callback', 'simple-under-construction', 'suc_main_section');
|
||||
}
|
||||
add_action('admin_init', 'suc_register_settings');
|
||||
|
||||
// Sanitize and validate input
|
||||
function suc_sanitize_settings($input) {
|
||||
$new_input = array();
|
||||
|
||||
$new_input['enabled'] = isset($input['enabled']) ? 1 : 0;
|
||||
$new_input['page'] = isset($input['page']) ? absint($input['page']) : 0;
|
||||
|
||||
return $new_input;
|
||||
}
|
||||
|
||||
// Callback for enabled setting
|
||||
function suc_enabled_callback() {
|
||||
$options = get_option('suc_settings');
|
||||
$checked = isset($options['enabled']) ? checked($options['enabled'], 1, false) : '';
|
||||
echo '<input type="checkbox" name="suc_settings[enabled]" value="1"' . $checked . '>';
|
||||
}
|
||||
|
||||
// Callback for page selection
|
||||
function suc_page_callback() {
|
||||
$options = get_option('suc_settings');
|
||||
$pages = get_pages();
|
||||
echo '<select name="suc_settings[page]">';
|
||||
foreach ($pages as $page) {
|
||||
$selected = (isset($options['page']) && $options['page'] == $page->ID) ? 'selected' : '';
|
||||
echo '<option value="' . $page->ID . '" ' . $selected . '>' . $page->post_title . '</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
}
|
||||
|
||||
// Redirect to under construction page
|
||||
function suc_redirect() {
|
||||
$options = get_option('suc_settings');
|
||||
|
||||
if (isset($options['enabled']) && $options['enabled'] == 1 && !is_user_logged_in()) {
|
||||
$under_construction_page = isset($options['page']) ? get_permalink($options['page']) : home_url();
|
||||
|
||||
if (!is_page($options['page'])) {
|
||||
wp_redirect($under_construction_page);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
add_action('template_redirect', 'suc_redirect');
|
||||
|
||||
// Add settings link on plugin page
|
||||
function suc_settings_link($links) {
|
||||
$settings_link = '<a href="admin.php?page=simple-under-construction">Settings</a>';
|
||||
array_unshift($links, $settings_link);
|
||||
return $links;
|
||||
}
|
||||
$plugin = plugin_basename(__FILE__);
|
||||
add_filter("plugin_action_links_$plugin", 'suc_settings_link');
|
||||
Reference in New Issue
Block a user