Files
wp-multi/includes/custom-text.php
T
2026-08-14 07:59:43 +00:00

158 lines
8.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* WP Multi Modul: Custom Text Box
*
* Automatisch aus wp-multi.php ausgelagert. Wird über den Loader in
* wp-multi.php eingebunden (nur wenn das WP Multi Toolkit aktiv ist).
*/
if (!defined('ABSPATH')) { exit; }
/*
* Custom Text Box
*/
// Funktion zur Registrierung der zusätzlichen Einstellungen für benutzerdefinierte Texte
function wp_multi_custom_text_register_settings() {
add_option('wp_multi_custom_texts', '');
add_option('wp_multi_second_custom_text', '');
add_option('wp_multi_enable_custom_texts', '1');
register_setting('wp_multi_custom_text_options_group', 'wp_multi_custom_texts');
register_setting('wp_multi_custom_text_options_group', 'wp_multi_second_custom_text');
register_setting('wp_multi_custom_text_options_group', 'wp_multi_enable_custom_texts');
}
add_action('admin_init', 'wp_multi_custom_text_register_settings');
// Der Custom-Text-Menüpunkt wird zentral in wp_multi_register_admin_menus() registriert.
// Funktion zum Erstellen der Einstellungsseite
function wp_multi_custom_text_settings_page_content() {
wpmt_admin_page_open(
__('Custom Text', 'wp-multi'),
__('Vordefinierte Textboxen am Ende deiner Beiträge', 'wp-multi')
);
wpmt_admin_card_open();
?>
<form method="post" action="options.php">
<?php settings_fields('wp_multi_custom_text_options_group'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row"><?php _e('Custom Texte aktivieren', 'wp-multi'); ?></th>
<td>
<input type="checkbox" name="wp_multi_enable_custom_texts" value="1" <?php checked(1, get_option('wp_multi_enable_custom_texts'), true); ?> />
<p class="description"><?php _e('Aktiviere oder deaktiviere die Anzeige der benutzerdefinierten Texte auf der Webseite.', 'wp-multi'); ?></p>
</td>
</tr>
<tr valign="top">
<th scope="row"><?php _e('Custom Texte', 'wp-multi'); ?></th>
<td>
<textarea name="wp_multi_custom_texts" rows="10" cols="50" class="large-text"><?php echo esc_textarea(get_option('wp_multi_custom_texts')); ?></textarea>
<p class="description"><?php _e('Gib jeden Text in einer neuen Zeile ein.', 'wp-multi'); ?></p>
</td>
</tr>
<tr valign="top">
<th scope="row"><?php _e('Zweiter Custom Text', 'wp-multi'); ?></th>
<td>
<textarea name="wp_multi_second_custom_text" rows="10" cols="50" class="large-text"><?php echo esc_textarea(get_option('wp_multi_second_custom_text')); ?></textarea>
<p class="description"><?php _e('Gib den zweiten Custom Text ein, der über der ersten Box angezeigt wird.', 'wp-multi'); ?></p>
</td>
</tr>
</table>
<?php submit_button(); ?>
</form>
<?php
wpmt_admin_card_close();
wpmt_admin_page_close();
}
// Anzeige der Custom Texts in einer Box im Frontend
function wp_multi_custom_text_display($content) {
$enable_custom_texts = get_option('wp_multi_enable_custom_texts', '1');
if ($enable_custom_texts !== '1') {
return $content;
}
if (is_single()) {
global $post;
$guest_author_name = get_post_meta($post->ID, '_guest_author', true);
$author_name = !empty($guest_author_name) ? $guest_author_name : get_the_author();
$custom_texts = get_option('wp_multi_custom_texts', '');
$second_custom_texts = get_option('wp_multi_second_custom_text', '');
$custom_texts_array = array_filter(array_map('trim', explode("\n", $custom_texts)));
$second_custom_texts_array = array_filter(array_map('trim', explode("\n", $second_custom_texts)));
$selected_custom_text = get_post_meta($post->ID, '_custom_text_choice', true);
$selected_second_custom_text = get_post_meta($post->ID, '_second_custom_text_choice', true);
if (empty($custom_texts_array) && empty($second_custom_texts_array)) {
return $content;
}
$output = '<div class="custom-text-box" style="margin-top: 40px; padding: 20px; background-color: #f0f0f0; border: 2px solid #ddd; border-radius: 10px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); max-width: 400px; width: auto; font-size: 16px; line-height: 1.2; clear: both; margin-left: auto; margin-right: 0; display: block; margin-bottom: 20px; position: relative;">';
$output .= '<p><strong>' . __('Autor:', 'wp-multi') . ' ' . esc_html($author_name);
if ($selected_second_custom_text !== '' && isset($second_custom_texts_array[$selected_second_custom_text])) {
$output .= ' | ' . esc_html($second_custom_texts_array[$selected_second_custom_text]);
}
$output .= '</strong></p>';
if ($selected_custom_text !== '' && isset($custom_texts_array[$selected_custom_text])) {
$output .= '<p><em>' . esc_html($custom_texts_array[$selected_custom_text]) . '</em></p>';
}
$output .= '</div>';
return $content . $output;
}
return $content;
}
add_filter('the_content', 'wp_multi_custom_text_display');
// Funktion zum Hinzufügen der Meta-Box für beide Custom Texts
function wp_multi_add_custom_text_fields($post) {
$custom_texts = get_option('wp_multi_custom_texts');
$custom_texts_array = array_filter(array_map('trim', explode("\n", $custom_texts)));
$second_custom_text = get_option('wp_multi_second_custom_text');
$second_custom_text_array = array_filter(array_map('trim', explode("\n", $second_custom_text)));
$selected_custom_text = get_post_meta($post->ID, '_custom_text_choice', true);
$selected_second_custom_text = get_post_meta($post->ID, '_second_custom_text_choice', true);
wp_nonce_field('wp_multi_custom_text_choice_nonce', 'wp_multi_custom_text_choice_nonce_field');
?>
<label for="custom_text_choice"><?php _e('Wähle den Custom Text (unterer Bereich):', 'wp-multi'); ?></label>
<select name="custom_text_choice" id="custom_text_choice" class="widefat">
<option value=""><?php _e('Keinen Text auswählen', 'wp-multi'); ?></option>
<?php foreach ($custom_texts_array as $key => $value) { ?>
<option value="<?php echo esc_attr($key); ?>" <?php selected($selected_custom_text, $key); ?>><?php echo esc_html($value); ?></option>
<?php } ?>
</select>
<label for="second_custom_text_choice"><?php _e('Wähle den zweiten Custom Text (oberer Bereich):', 'wp-multi'); ?></label>
<select name="second_custom_text_choice" id="second_custom_text_choice" class="widefat">
<option value=""><?php _e('Keinen Text auswählen', 'wp-multi'); ?></option>
<?php foreach ($second_custom_text_array as $key => $value) { ?>
<option value="<?php echo esc_attr($key); ?>" <?php selected($selected_second_custom_text, $key); ?>><?php echo esc_html($value); ?></option>
<?php } ?>
</select>
<?php
}
// Meta-Box hinzufügen
add_action('add_meta_boxes', function() {
add_meta_box('wp_multi_custom_text', __('Custom Text Auswahl', 'wp-multi'), 'wp_multi_add_custom_text_fields', 'post', 'normal', 'high');
});
// Speichern der benutzerdefinierten Textauswahl im Beitrag
function wp_multi_save_custom_text_choice($post_id) {
if (!isset($_POST['wp_multi_custom_text_choice_nonce_field']) || !wp_verify_nonce($_POST['wp_multi_custom_text_choice_nonce_field'], 'wp_multi_custom_text_choice_nonce')) {
return;
}
if (!current_user_can('edit_post', $post_id)) {
return;
}
if (isset($_POST['custom_text_choice'])) {
update_post_meta($post_id, '_custom_text_choice', sanitize_text_field(wp_unslash($_POST['custom_text_choice'])));
}
if (isset($_POST['second_custom_text_choice'])) {
update_post_meta($post_id, '_second_custom_text_choice', sanitize_text_field(wp_unslash($_POST['second_custom_text_choice'])));
}
}
add_action('save_post', 'wp_multi_save_custom_text_choice');