PluginProbe
AL Pack / trunk
AL Pack vtrunk
1.3.13 trunk 1.0.0 1.1.1 1.1.2 1.2.0 1.2.1 1.2.2 1.3.0 1.3.1 1.3.11 1.3.12
alpack / templates / admin-header-footer.php

admin-header-footer.php in AL Pack trunk, at templates/admin-header-footer.php

207 lines 8.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if (!defined('ABSPATH')) {
3 exit;
4 }
5
6 $is_activated = presslearn_plugin()->is_plugin_activated();
7
8 if (!$is_activated) {
9 wp_redirect(admin_url('admin.php?page=presslearn-settings'));
10 exit;
11 }
12
13 if (isset($_POST['presslearn_toggle_header_footer']) && isset($_POST['enable'])) {
14 check_admin_referer('presslearn_toggle_header_footer_nonce');
15
16 if (current_user_can('manage_options')) {
17 $enable = sanitize_text_field(wp_unslash($_POST['enable']));
18 if ($enable === 'yes' || $enable === 'no') {
19 update_option('presslearn_header_footer_enabled', $enable);
20 update_option('presslearn_header_footer_user_set', 'yes');
21 $updated = true;
22 }
23 }
24 }
25
26 if (current_user_can('manage_options') && is_admin() && isset($_GET['action']) && isset($_GET['enable']) && isset($_GET['feature'])) {
27 if (!isset($_GET['_wpnonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_GET['_wpnonce'])), 'presslearn_toggle_header_footer_action')) {
28 wp_die('보안 검증에 실패했습니다.');
29 }
30
31 $action = sanitize_text_field(wp_unslash($_GET['action']));
32 $enable = sanitize_text_field(wp_unslash($_GET['enable']));
33 $feature = sanitize_text_field(wp_unslash($_GET['feature']));
34
35 if ($action === 'toggle' && $feature === 'header_footer' && ($enable === 'yes' || $enable === 'no')) {
36 update_option('presslearn_header_footer_enabled', $enable);
37 update_option('presslearn_header_footer_user_set', 'yes');
38 $updated = true;
39 }
40 }
41
42 if (isset($_POST['save_header_footer_settings'])) {
43 check_admin_referer('presslearn_save_header_footer_nonce');
44
45 if (current_user_can('manage_options')) {
46 $max_length = 65535;
47
48 $header = isset($_POST['header_code']) ? wp_unslash($_POST['header_code']) : '';
49 if (strlen($header) <= $max_length) {
50 update_option('presslearn_header_code', $header);
51 }
52
53 $footer = isset($_POST['footer_code']) ? wp_unslash($_POST['footer_code']) : '';
54 if (strlen($footer) <= $max_length) {
55 update_option('presslearn_footer_code', $footer);
56 }
57
58 $body_open = isset($_POST['body_open_code']) ? wp_unslash($_POST['body_open_code']) : '';
59 if (strlen($body_open) <= $max_length) {
60 update_option('presslearn_body_open_code', $body_open);
61 }
62
63 $before_closing = isset($_POST['before_closing_body_code']) ? wp_unslash($_POST['before_closing_body_code']) : '';
64 if (strlen($before_closing) <= $max_length) {
65 update_option('presslearn_before_closing_body_code', $before_closing);
66 }
67
68 $settings_updated = true;
69 } else {
70 $save_error = true;
71 }
72 }
73
74 $header_footer_enabled = get_option('presslearn_header_footer_enabled', 'no');
75 $header_code = get_option('presslearn_header_code', '');
76 $footer_code = get_option('presslearn_footer_code', '');
77 $body_open_code = get_option('presslearn_body_open_code', '');
78 $before_closing_body_code = get_option('presslearn_before_closing_body_code', '');
79
80 ?>
81
82 <div class="presslearn-header">
83 <div class="presslearn-header-logo">
84 <img src="<?php echo esc_url(PRESSLEARN_PLUGIN_URL); ?>assets/images/logo.png" alt="PressLearn Logo">
85 <h1>헤더 & 푸터</h1>
86 </div>
87 <div class="presslearn-header-status">
88 <?php if ($header_footer_enabled === 'yes'): ?>
89 <div class="presslearn-header-status-item status-activate">
90 <p>기능이 활성화되었습니다.</p>
91 </div>
92 <?php else: ?>
93 <div class="presslearn-header-status-item status-deactivate">
94 <p>기능이 비활성화 상태�
95 니다.</p>
96 </div>
97 <?php endif; ?>
98 </div>
99 </div>
100
101 <div class="wrap">
102 <div class="presslearn-breadcrumbs-wrap">
103 <div class="presslearn-breadcrumbs">
104 <span>대시보드</span>
105 <span class="divider">/</span>
106 <span class="active">헤더 & 푸터</span>
107 </div>
108 </div>
109
110 <?php if (isset($settings_updated) && $settings_updated): ?>
111 <div class="notice notice-success inline">
112 <p>설정 정보가 성공적으로 저장되었습니다.</p>
113 </div>
114 <?php endif; ?>
115
116 <div class="presslearn-card">
117 <div class="presslearn-card-header">
118 <h2>헤더 & 푸터</h2>
119 <p>웹사이트의 헤더와 푸터에 HTML, CSS, JavaScript 코드를 삽�
120 있습니다.</p>
121 </div>
122 <div class="presslearn-card-body">
123 <div class="presslearn-card-body-row">
124 <div class="presslearn-card-body-row-item grid-left">
125 <h3>플러그인 기능 활성화</h3>
126 </div>
127 <div class="presslearn-card-body-row-item grid-right">
128 <form method="post" action="" id="header-footer-toggle-form">
129 <?php wp_nonce_field('presslearn_toggle_header_footer_nonce'); ?>
130 <input type="hidden" name="presslearn_toggle_header_footer" value="1">
131 <input type="hidden" name="enable" id="header-footer-enable-value" value="<?php echo esc_attr($header_footer_enabled === 'yes' ? 'no' : 'yes'); ?>">
132
133 <label class="switch">
134 <input type="checkbox" <?php echo esc_attr($header_footer_enabled === 'yes' ? 'checked' : ''); ?> onchange="document.getElementById('header-footer-enable-value').value = this.checked ? 'yes' : 'no'; document.getElementById('header-footer-toggle-form').submit();">
135 <span class="slider round"></span>
136 </label>
137 </form>
138 </div>
139 </div>
140 <form method="post" action="" id="header-footer-settings-form">
141 <?php wp_nonce_field('presslearn_save_header_footer_nonce'); ?>
142 <input type="hidden" name="save_header_footer_settings" value="1">
143
144 <div class="presslearn-card-body-row">
145 <div class="presslearn-card-body-row-item grid-left">
146 <h3>헤더 코드 (HTML Head)</h3>
147 <p>웹사이트의 &lt;head&gt; 영역에 삽�
148 할 코드를 �
149 력하세요.</p>
150 </div>
151 <div class="presslearn-card-body-row-item grid-right">
152 <textarea name="header_code" rows="8" cols="50" class="widefat" placeholder="원하는 코드를 �
153 력해 주세요"><?php echo esc_textarea($header_code); ?></textarea>
154 </div>
155 </div>
156
157 <div class="presslearn-card-body-row">
158 <div class="presslearn-card-body-row-item grid-left">
159 <h3>Body 시작 코드</h3>
160 <p>&lt;body&gt; 태그 바로 다음에 삽�
161 할 코드를 �
162 력하세요.</p>
163 </div>
164 <div class="presslearn-card-body-row-item grid-right">
165 <textarea name="body_open_code" rows="8" cols="50" class="widefat" placeholder="원하는 코드를 �
166 력해 주세요"><?php echo esc_textarea($body_open_code); ?></textarea>
167 </div>
168 </div>
169
170 <div class="presslearn-card-body-row">
171 <div class="presslearn-card-body-row-item grid-left">
172 <h3>Body �
173 코드</h3>
174 <p>&lt;/body&gt; 태그 바로 전에 삽�
175 할 코드를 �
176 력하세요.</p>
177 </div>
178 <div class="presslearn-card-body-row-item grid-right">
179 <textarea name="before_closing_body_code" rows="8" cols="50" class="widefat" placeholder="원하는 코드를 �
180 력해 주세요"><?php echo esc_textarea($before_closing_body_code); ?></textarea>
181 </div>
182 </div>
183
184 <div class="presslearn-card-body-row">
185 <div class="presslearn-card-body-row-item grid-left">
186 <h3>푸터 코드</h3>
187 <p>푸터 영역에 삽�
188 할 코드를 �
189 력하세요.</p>
190 </div>
191 <div class="presslearn-card-body-row-item grid-right">
192 <textarea name="footer_code" rows="8" cols="50" class="widefat" placeholder="원하는 코드를 �
193 력해 주세요"><?php echo esc_textarea($footer_code); ?></textarea>
194 </div>
195 </div>
196 </form>
197 </div>
198 <div class="presslearn-card-footer">
199 <div class="presslearn-card-footer-item grid-left">
200 <span class="tip_button">코드 저장 웹사이트에서 즉시 반영됩니다.</span>
201 </div>
202 <div class="presslearn-card-footer-item grid-right">
203 <button type="submit" class="point-btn" form="header-footer-settings-form">저장하기</button>
204 </div>
205 </div>
206 </div>
207 </div>