┌────────────────────────────────┐ │ ░░░ ░░▓ ░▓▓ ███ ▓▓░ ▓░░ │ │ ~ M O O N ~ │ └────────────────────────────────┘
prd-web-01.centraldc.gr
LOCATION:
/var/www/html/adconect/wp-content/plugins/themes-homepage
☗ ROOT
↻ REFRESH
✎ EDIT FILE
EDITING: themes-homepage.php
<?php /** * Plugin Name: Theme's Homepages * Description: Δυναμική εναλλαγή Front Page & Posts Page βάσει του τρέχοντος Theme (Switcher compatible) * Author: Giannis Giannopoulos / ai * Version: 1.1 */ if ( ! defined( 'ABSPATH' ) ) exit; /** * 1. Το Logic του Override: Επιβάλλει τις σελίδες βάσει του theme */ // Override για την Αρχική Σελίδα add_filter('option_page_on_front', function($value) { $current_theme = get_stylesheet(); $assignments = get_option('theme_home_mapper_data', array()); if (!empty($assignments[$current_theme]['home'])) { return $assignments[$current_theme]['home']; } return $value; }); // Override για τη Σελίδα των Posts (Blog) add_filter('option_page_for_posts', function($value) { $current_theme = get_stylesheet(); $assignments = get_option('theme_home_mapper_data', array()); if (!empty($assignments[$current_theme]['blog'])) { return $assignments[$current_theme]['blog']; } return $value; }); // Διασφάλιση ότι το WordPress θα διαβάζει "στατική σελίδα" αν υπάρχει ανάθεση για το τρέχον theme add_filter('option_show_on_front', function($value) { $assignments = get_option('theme_home_mapper_data', array()); $current_theme = get_stylesheet(); if (!empty($assignments[$current_theme]['home'])) { return 'page'; } return $value; }); /** * Προσθήκη συνδέσμου "Settings" στη σελίδα των Plugins */ add_filter('plugin_action_links_' . plugin_basename(__FILE__), function($links) { $settings_link = '<a href="' . admin_url('tools.php?page=theme-home-mapper') . '">Settings</a>'; array_unshift($links, $settings_link); return $links; }); /** * 2. Δημιουργία της σελίδας ρυθμίσεων στα Tools */ add_action('admin_menu', function() { add_management_page( 'Theme Home Mapper', 'Theme Home Mapper', 'manage_options', 'theme-home-mapper', 'render_theme_home_mapper_page' ); }); /** * 3. Render του Table στο Tools -> Theme Home Mapper */ function render_theme_home_mapper_page() { // Save Logic if (isset($_POST['save_theme_mapper']) && check_admin_referer('theme_mapper_save')) { update_option('theme_home_mapper_data', $_POST['theme_map']); echo '<div class="updated"><p>Οι ρυθμίσεις αποθηκεύτηκαν επιτυχώς!</p></div>'; } $assignments = get_option('theme_home_mapper_data', array()); $all_themes = wp_get_themes(); $pages = get_pages(); ?> <div class="wrap"> <h1>Theme Home & Blog Mapper</h1> <p>Αντιστοιχίστε την <strong>Αρχική Σελίδα</strong> και τη <strong>Σελίδα Άρθρων</strong> για κάθε theme ξεχωριστά.</p> <form method="post"> <?php wp_nonce_field('theme_mapper_save'); ?> <table class="wp-list-table widefat fixed striped" style="margin-top: 20px;"> <thead> <tr> <th style="width: 20%;">Theme Name</th> <th>Home Page Assignment</th> <th>Blog Page Assignment</th> </tr> </thead> <tbody> <?php foreach ($all_themes as $slug => $theme): ?> <tr> <td> <strong><?php echo esc_html($theme->get('Name')); ?></strong><br> <small><code><?php echo esc_html($slug); ?></code></small> </td> <td> <select name="theme_map[<?php echo esc_attr($slug); ?>][home]" style="width: 90%;"> <option value="">-- Προεπιλογή WordPress --</option> <?php foreach ($pages as $page): ?> <option value="<?php echo $page->ID; ?>" <?php selected($assignments[$slug]['home'] ?? '', $page->ID); ?>> <?php echo esc_html($page->post_title); ?> </option> <?php endforeach; ?> </select> </td> <td> <select name="theme_map[<?php echo esc_attr($slug); ?>][blog]" style="width: 90%;"> <option value="">-- Προεπιλογή WordPress --</option> <?php foreach ($pages as $page): ?> <option value="<?php echo $page->ID; ?>" <?php selected($assignments[$slug]['blog'] ?? '', $page->ID); ?>> <?php echo esc_html($page->post_title); ?> </option> <?php endforeach; ?> </select> </td> </tr> <?php endforeach; ?> </tbody> </table> <p class="submit"> <input type="submit" name="save_theme_mapper" id="submit" class="button button-primary" value="Αποθήκευση Αντιστοιχίσεων"> </p> </form> </div> <?php }
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 themes-homepage.php
PHP
5.7 KB
2026-05-15 14:21
EDIT