Changeset 3618717
- Timestamp:
- 07/22/2026 01:53:22 PM (3 months ago)
- Location:
- zhekich-feed-generator-for-dzen
- Files:
-
- 4 edited
- 5 copied
-
tags/1.2.7 (copied) (copied from zhekich-feed-generator-for-dzen/trunk )
-
tags/1.2.7/includes (copied) (copied from zhekich-feed-generator-for-dzen/trunk/includes )
-
tags/1.2.7/includes/Admin/SettingsPage.php (modified) (15 diffs)
-
tags/1.2.7/readme.txt (copied) (copied from zhekich-feed-generator-for-dzen/trunk/readme.txt ) (2 diffs)
-
tags/1.2.7/uninstall.php (copied) (copied from zhekich-feed-generator-for-dzen/trunk/uninstall.php )
-
tags/1.2.7/zhekich-feed-generator-for-dzen.php (copied) (copied from zhekich-feed-generator-for-dzen/trunk/zhekich-feed-generator-for-dzen.php ) (3 diffs)
-
trunk/includes/Admin/SettingsPage.php (modified) (15 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/zhekich-feed-generator-for-dzen.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
zhekich-feed-generator-for-dzen/tags/1.2.7/includes/Admin/SettingsPage.php
r3618425 r3618717 27 27 { 28 28 $hook = add_options_page( 29 'Zhekich Feed Generator for Dzen',30 'Zhekich Feed Generator for Dzen',29 __('Zhekich Feed Generator for Dzen', 'zhekich-feed-generator-for-dzen'), 30 __('Zhekich Feed Generator for Dzen', 'zhekich-feed-generator-for-dzen'), 31 31 'manage_options', 32 32 self::PAGE_SLUG, … … 71 71 $screen->add_help_tab([ 72 72 'id' => 'dzen-variants', 73 'title' => 'Варианты unified-RSS',73 'title' => __('Варианты unified-RSS', 'zhekich-feed-generator-for-dzen'), 74 74 'content' => $this->helpVariantsHtml(), 75 75 ]); … … 77 77 $screen->add_help_tab([ 78 78 'id' => 'dzen-faq', 79 'title' => 'Частые вопросы',79 'title' => __('Частые вопросы', 'zhekich-feed-generator-for-dzen'), 80 80 'content' => $this->helpFaqHtml(), 81 81 ]); 82 82 83 83 $screen->set_help_sidebar( 84 '<p><strong> Полезные ссылки</strong></p>' .85 '<p><a href="https://dzen.ru/help/ru/news/seamless/rss.html" target="_blank" rel="noopener"> Требования Дзена к unified-RSS</a></p>'84 '<p><strong>' . esc_html__('Полезные ссылки', 'zhekich-feed-generator-for-dzen') . '</strong></p>' . 85 '<p><a href="https://dzen.ru/help/ru/news/seamless/rss.html" target="_blank" rel="noopener">' . esc_html__('Требования Дзена к unified-RSS', 'zhekich-feed-generator-for-dzen') . '</a></p>' 86 86 ); 87 87 } … … 89 89 private function helpVariantsHtml(): string 90 90 { 91 return '<p> Дзен принимает три схемы unified-RSS — плагин поддерживает все три:</p>'92 . '<p><strong> Вариант 1 (Pro).</strong> Один поток, у каждой записи свой тег <contentType>'93 . '(«Новости и канал» / «Только Новости» / «Только канал») — выбирается на самой записи через meta-box. '94 . ' Подходит, если разные посты должны идти в разные места.</p>'95 . '<p><strong> Вариант 2 (Pro).</strong> Один поток, но у каждой записи два адреса — обычная страница сайта'96 . 'и отдельная теневая страница-зеркало. Нужен, потому что Дзен сверяет заголовок и текст публикации '97 . ' с содержимым страницы по ссылке, а оформление для Новостей и для сайта иногда должно отличаться.</p>'98 . '<p><strong> Вариант 3 (Free).</strong> Два отдельных, жёстко размеченных потока — один целиком для Новостей,'99 . 'другой целиком для канала. Не требует различий между постами — самый низкий порог входа, подходит почти всем '100 . ' сайтам, мигрирующим с Yandex.News Feed by Teplitsa.</p>';91 return '<p>' . esc_html__('Дзен принимает три схемы unified-RSS — плагин поддерживает все три:', 'zhekich-feed-generator-for-dzen') . '</p>' 92 . '<p><strong>' . esc_html__('Вариант 1 (Pro).', 'zhekich-feed-generator-for-dzen') . '</strong> ' 93 . esc_html__('Один поток, у каждой записи свой тег <contentType> («Новости и канал» / «Только Новости» / «Только канал») — выбирается на самой записи через meta-box. Подходит, если разные посты должны идти в разные места.', 'zhekich-feed-generator-for-dzen') 94 . '</p>' 95 . '<p><strong>' . esc_html__('Вариант 2 (Pro).', 'zhekich-feed-generator-for-dzen') . '</strong> ' 96 . esc_html__('Один поток, но у каждой записи два адреса — обычная страница сайта и отдельная теневая страница-зеркало. Нужен, потому что Дзен сверяет заголовок и текст публикации с содержимым страницы по ссылке, а оформление для Новостей и для сайта иногда должно отличаться.', 'zhekich-feed-generator-for-dzen') 97 . '</p>' 98 . '<p><strong>' . esc_html__('Вариант 3 (Free).', 'zhekich-feed-generator-for-dzen') . '</strong> ' 99 . esc_html__('Два отдельных, жёстко размеченных потока — один целиком для Новостей, другой целиком для канала. Не требует различий между постами — самый низкий порог входа, подходит почти всем сайтам, мигрирующим с Yandex.News Feed by Teplitsa.', 'zhekich-feed-generator-for-dzen') 100 . '</p>'; 101 101 } 102 102 103 103 private function helpFaqHtml(): string 104 104 { 105 return '<p><strong>Нужен ли ещё какой-то RSS-плагин для работы?</strong><br>' 106 . 'Нет, Zhekich Feed Generator for Dzen полностью самостоятелен и не зависит от других плагинов.</p>' 107 . '<p><strong>Что делать с Yandex.News Feed by Teplitsa?</strong><br>' 108 . 'Его можно деактивировать — этот плагин полностью закрывает его функциональность (лимит возраста, логотипы, ' 109 . 'исключение рубрик, скрытие автора) в схеме unified-RSS.</p>' 110 . '<p><strong>Какие URL добавлять в кабинет Дзена?</strong><br>' 111 . 'В free-режиме — оба адреса вкладки «Основное». В Pro — один из адресов вкладки «Pro», в зависимости ' 112 . 'от выбранного варианта.</p>'; 105 return '<p><strong>' . esc_html__('Нужен ли ещё какой-то RSS-плагин для работы?', 'zhekich-feed-generator-for-dzen') . '</strong><br>' 106 . esc_html__('Нет, Zhekich Feed Generator for Dzen полностью самостоятелен и не зависит от других плагинов.', 'zhekich-feed-generator-for-dzen') . '</p>' 107 . '<p><strong>' . esc_html__('Что делать с Yandex.News Feed by Teplitsa?', 'zhekich-feed-generator-for-dzen') . '</strong><br>' 108 . esc_html__('Его можно деактивировать — этот плагин полностью закрывает его функциональность (лимит возраста, логотипы, исключение рубрик, скрытие автора) в схеме unified-RSS.', 'zhekich-feed-generator-for-dzen') . '</p>' 109 . '<p><strong>' . esc_html__('Какие URL добавлять в кабинет Дзена?', 'zhekich-feed-generator-for-dzen') . '</strong><br>' 110 . esc_html__('В free-режиме — оба адреса вкладки «Основное». В Pro — один из адресов вкладки «Pro», в зависимости от выбранного варианта.', 'zhekich-feed-generator-for-dzen') . '</p>'; 113 111 } 114 112 … … 143 141 ?> 144 142 <div class="wrap dzen-unified-rss-settings"> 145 <h1> Zhekich Feed Generator for Dzen</h1>143 <h1><?php esc_html_e('Zhekich Feed Generator for Dzen', 'zhekich-feed-generator-for-dzen'); ?></h1> 146 144 <?php $this->renderVariantsOverview(); ?> 147 145 … … 149 147 <a href="<?php echo esc_url(add_query_arg(['page' => self::PAGE_SLUG, 'tab' => 'general'], admin_url('options-general.php'))); ?>" 150 148 class="nav-tab <?php echo $tab === 'general' ? 'nav-tab-active' : ''; ?>"> 151 Основное (Free)149 <?php esc_html_e('Основное (Free)', 'zhekich-feed-generator-for-dzen'); ?> 152 150 </a> 153 151 <a href="<?php echo esc_url(add_query_arg(['page' => self::PAGE_SLUG, 'tab' => 'pro'], admin_url('options-general.php'))); ?>" … … 155 153 Pro 156 154 <?php if (Options::isPro()): ?> 157 <span class="dzen-badge dzen-badge-active"> активна</span>155 <span class="dzen-badge dzen-badge-active"><?php esc_html_e('активна', 'zhekich-feed-generator-for-dzen'); ?></span> 158 156 <?php else: ?> 159 157 <span class="dzen-badge dzen-badge-pro">🔒</span> … … 175 173 ?> 176 174 <div class="notice notice-info inline dzen-variants-overview"> 177 <p><strong> Дзен принимает три схемы unified-RSS:</strong></p>175 <p><strong><?php esc_html_e('Дзен принимает три схемы unified-RSS:', 'zhekich-feed-generator-for-dzen'); ?></strong></p> 178 176 <ol> 179 <li><strong> Вариант 1</strong> — один поток, <contentType> свой у каждой записи (meta-box на посте).<span class="dzen-badge dzen-badge-pro">Pro</span></li>180 <li><strong> Вариант 2</strong> — один поток, у каждой записи два адреса (страница сайта + теневая копия).<span class="dzen-badge dzen-badge-pro">Pro</span></li>181 <li><strong> Вариант 3</strong> — два отдельных потока: весь целиком в Новости, весь целиком в канал. Различий между постами не требует.<span class="dzen-badge dzen-badge-free">Free</span></li>177 <li><strong><?php esc_html_e('Вариант 1', 'zhekich-feed-generator-for-dzen'); ?></strong> — <?php esc_html_e('один поток, <contentType> свой у каждой записи (meta-box на посте).', 'zhekich-feed-generator-for-dzen'); ?> <span class="dzen-badge dzen-badge-pro">Pro</span></li> 178 <li><strong><?php esc_html_e('Вариант 2', 'zhekich-feed-generator-for-dzen'); ?></strong> — <?php esc_html_e('один поток, у каждой записи два адреса (страница сайта + теневая копия).', 'zhekich-feed-generator-for-dzen'); ?> <span class="dzen-badge dzen-badge-pro">Pro</span></li> 179 <li><strong><?php esc_html_e('Вариант 3', 'zhekich-feed-generator-for-dzen'); ?></strong> — <?php esc_html_e('два отдельных потока: весь целиком в Новости, весь целиком в канал. Различий между постами не требует.', 'zhekich-feed-generator-for-dzen'); ?> <span class="dzen-badge dzen-badge-free">Free</span></li> 182 180 </ol> 183 <p>Подробнее — во вкладке <em>Справка</em> в правом верхнем углу этой страницы.</p> 181 <p><?php 182 printf( 183 /* translators: %s: "Справка" (Help) tab label */ 184 esc_html__('Подробнее — во вкладке %s в правом верхнем углу этой страницы.', 'zhekich-feed-generator-for-dzen'), 185 '<em>' . esc_html__('Справка', 'zhekich-feed-generator-for-dzen') . '</em>' 186 ); 187 ?></p> 184 188 </div> 185 189 <?php … … 197 201 <table class="form-table"> 198 202 <tr> 199 <th><label for="max_age_days"> Максимальный возраст записей (дни)</label></th>203 <th><label for="max_age_days"><?php esc_html_e('Максимальный возраст записей (дни)', 'zhekich-feed-generator-for-dzen'); ?></label></th> 200 204 <td> 201 205 <input type="number" min="0" id="max_age_days" 202 206 name="<?php echo esc_attr($key); ?>[max_age_days]" 203 207 value="<?php echo esc_attr($options['max_age_days']); ?>"> 204 <p class="description"> Только для потока Новостей — фильтр по дате публикации.</p>205 </td> 206 </tr> 207 <tr> 208 <th><label for="logo_url"> Логотип (URL)</label></th>208 <p class="description"><?php esc_html_e('Только для потока Новостей — фильтр по дате публикации.', 'zhekich-feed-generator-for-dzen'); ?></p> 209 </td> 210 </tr> 211 <tr> 212 <th><label for="logo_url"><?php esc_html_e('Логотип (URL)', 'zhekich-feed-generator-for-dzen'); ?></label></th> 209 213 <td> 210 214 <input type="url" class="regular-text" id="logo_url" … … 214 218 </tr> 215 219 <tr> 216 <th><label for="logo_square_url"> Квадратный логотип (URL)</label></th>220 <th><label for="logo_square_url"><?php esc_html_e('Квадратный логотип (URL)', 'zhekich-feed-generator-for-dzen'); ?></label></th> 217 221 <td> 218 222 <input type="url" class="regular-text" id="logo_square_url" … … 222 226 </tr> 223 227 <tr> 224 <th><label for="exclude_taxonomy"> Таксономия для исключения</label></th>228 <th><label for="exclude_taxonomy"><?php esc_html_e('Таксономия для исключения', 'zhekich-feed-generator-for-dzen'); ?></label></th> 225 229 <td> 226 230 <select id="exclude_taxonomy" name="<?php echo esc_attr($key); ?>[exclude_taxonomy]"> 227 <option value=""> — не исключать —</option>231 <option value=""><?php esc_html_e('— не исключать —', 'zhekich-feed-generator-for-dzen'); ?></option> 228 232 <?php foreach (get_taxonomies(['public' => true], 'objects') as $taxonomy): ?> 229 233 <option value="<?php echo esc_attr($taxonomy->name); ?>" … … 236 240 </tr> 237 241 <tr> 238 <th><label for="exclude_terms"> ID термов для исключения</label></th>242 <th><label for="exclude_terms"><?php esc_html_e('ID термов для исключения', 'zhekich-feed-generator-for-dzen'); ?></label></th> 239 243 <td> 240 244 <input type="text" class="regular-text" id="exclude_terms" … … 242 246 value="<?php echo esc_attr($options['exclude_terms']); ?>" 243 247 placeholder="671, 812"> 244 <p class="description"> Через запятую, ID термов таксономии выше (например, «Новости компаний»).</p>245 </td> 246 </tr> 247 <tr> 248 <th> Скрыть автора</th>248 <p class="description"><?php esc_html_e('Через запятую, ID термов таксономии выше (например, «Новости компаний»).', 'zhekich-feed-generator-for-dzen'); ?></p> 249 </td> 250 </tr> 251 <tr> 252 <th><?php esc_html_e('Скрыть автора', 'zhekich-feed-generator-for-dzen'); ?></th> 249 253 <td> 250 254 <label> 251 255 <input type="checkbox" name="<?php echo esc_attr($key); ?>[hide_author]" 252 256 <?php checked($options['hide_author']); ?>> 253 не выводить <author> в фиде257 <?php esc_html_e('не выводить <author> в фиде', 'zhekich-feed-generator-for-dzen'); ?> 254 258 </label> 255 259 </td> 256 260 </tr> 257 261 <tr> 258 <th> Включать изображение превью в текст статьи</th>262 <th><?php esc_html_e('Включать изображение превью в текст статьи', 'zhekich-feed-generator-for-dzen'); ?></th> 259 263 <td> 260 264 <label> 261 265 <input type="checkbox" name="<?php echo esc_attr($key); ?>[cover_in_content]" 262 266 <?php checked($options['cover_in_content']); ?>> 263 если в тексте статьи вообще нет картинок — добавить обложку первым элементом267 <?php esc_html_e('если в тексте статьи вообще нет картинок — добавить обложку первым элементом', 'zhekich-feed-generator-for-dzen'); ?> 264 268 </label> 265 <p class="description"> Не дублирует, если в тексте уже есть хотя бы одна картинка.</p>269 <p class="description"><?php esc_html_e('Не дублирует, если в тексте уже есть хотя бы одна картинка.', 'zhekich-feed-generator-for-dzen'); ?></p> 266 270 </td> 267 271 </tr> … … 271 275 272 276 <p class="description"> 273 Free-режим (вариант 3, всегда активен):<br>274 <code><?php echo esc_html(home_url('/feed/dzen-news/')); ?></code> — Новости,275 <code><?php echo esc_html(home_url('/feed/dzen/')); ?></code> — канал.277 <?php esc_html_e('Free-режим (вариант 3, всегда активен):', 'zhekich-feed-generator-for-dzen'); ?><br> 278 <code><?php echo esc_html(home_url('/feed/dzen-news/')); ?></code> — <?php esc_html_e('Новости', 'zhekich-feed-generator-for-dzen'); ?>, 279 <code><?php echo esc_html(home_url('/feed/dzen/')); ?></code> — <?php esc_html_e('канал', 'zhekich-feed-generator-for-dzen'); ?>. 276 280 </p> 277 281 </div> … … 293 297 <div class="postbox"> 294 298 <div class="inside"> 295 <p>Варианты 1 и 2 (по-постовый тип публикации и второй адрес на публикацию) не входят 296 в этот плагин. Их даёт отдельное платное дополнение 297 <strong>Zhekich Feed Generator for Dzen Pro</strong> — устанавливается поверх этого 298 плагина и не распространяется через каталог WordPress.org.</p> 299 <p><a class="button button-primary" href="<?php echo esc_url(self::PURCHASE_URL); ?>" target="_blank" rel="noopener">Подробнее и купить</a></p> 299 <p><?php 300 printf( 301 /* translators: %s: "Zhekich Feed Generator for Dzen Pro" (product name, not translated) */ 302 esc_html__('Варианты 1 и 2 (по-постовый тип публикации и второй адрес на публикацию) не входят в этот плагин. Их даёт отдельное платное дополнение %s — устанавливается поверх этого плагина и не распространяется через каталог WordPress.org.', 'zhekich-feed-generator-for-dzen'), 303 '<strong>Zhekich Feed Generator for Dzen Pro</strong>' 304 ); 305 ?></p> 306 <p><a class="button button-primary" href="<?php echo esc_url(self::PURCHASE_URL); ?>" target="_blank" rel="noopener"><?php esc_html_e('Подробнее и купить', 'zhekich-feed-generator-for-dzen'); ?></a></p> 300 307 </div> 301 308 </div> -
zhekich-feed-generator-for-dzen/tags/1.2.7/readme.txt
r3618454 r3618717 6 6 Tested up to: 7.0 7 7 Requires PHP: 7.4 8 Stable tag: 1.2. 68 Stable tag: 1.2.7 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 90 90 == Changelog == 91 91 92 = 1.2.7 = 93 * Properly internationalized the plugin: all admin UI strings now go through `__()`/`esc_html__()` 94 with the `zhekich-feed-generator-for-dzen` text domain (Russian as the source/default text, 95 matching the plugin's actual audience), plus `load_plugin_textdomain()` for reliability outside 96 WordPress.org's own translation loading. 97 92 98 = 1.2.6 = 93 99 * No code changes. Added plugin page assets (icon, banner, screenshots) and documented the -
zhekich-feed-generator-for-dzen/tags/1.2.7/zhekich-feed-generator-for-dzen.php
r3618454 r3618717 4 4 * Plugin URI: https://github.com/eugenekrukov/zhekich-feed-generator-for-dzen 5 5 * Description: Самостоятельный генератор unified-RSS фида для Дзена (Новости + канал) по правилам от 13.07.2026 (dzen.ru/help/ru/news/seamless/rss.html). Замена для заброшенного Yandex.News Feed by Teplitsa. 6 * Version: 1.2. 66 * Version: 1.2.7 7 7 * Requires PHP: 7.4 8 8 * Author: Eugene Krukov … … 16 16 define('DZEN_UNIFIED_RSS_DIR', plugin_dir_path(__FILE__)); 17 17 define('DZEN_UNIFIED_RSS_URL', plugin_dir_url(__FILE__)); 18 define('DZEN_UNIFIED_RSS_VERSION', '1.2. 6');18 define('DZEN_UNIFIED_RSS_VERSION', '1.2.7'); 19 19 20 20 spl_autoload_register(static function (string $class): void { … … 37 37 register_deactivation_hook(__FILE__, 'flush_rewrite_rules'); 38 38 39 add_action('init', static function (): void { 40 load_plugin_textdomain('zhekich-feed-generator-for-dzen', false, dirname(plugin_basename(__FILE__)) . '/languages'); 41 }); 42 39 43 add_action('plugins_loaded', static function (): void { 40 44 \DzenUnifiedRss\Plugin::instance()->init(); -
zhekich-feed-generator-for-dzen/trunk/includes/Admin/SettingsPage.php
r3618425 r3618717 27 27 { 28 28 $hook = add_options_page( 29 'Zhekich Feed Generator for Dzen',30 'Zhekich Feed Generator for Dzen',29 __('Zhekich Feed Generator for Dzen', 'zhekich-feed-generator-for-dzen'), 30 __('Zhekich Feed Generator for Dzen', 'zhekich-feed-generator-for-dzen'), 31 31 'manage_options', 32 32 self::PAGE_SLUG, … … 71 71 $screen->add_help_tab([ 72 72 'id' => 'dzen-variants', 73 'title' => 'Варианты unified-RSS',73 'title' => __('Варианты unified-RSS', 'zhekich-feed-generator-for-dzen'), 74 74 'content' => $this->helpVariantsHtml(), 75 75 ]); … … 77 77 $screen->add_help_tab([ 78 78 'id' => 'dzen-faq', 79 'title' => 'Частые вопросы',79 'title' => __('Частые вопросы', 'zhekich-feed-generator-for-dzen'), 80 80 'content' => $this->helpFaqHtml(), 81 81 ]); 82 82 83 83 $screen->set_help_sidebar( 84 '<p><strong> Полезные ссылки</strong></p>' .85 '<p><a href="https://dzen.ru/help/ru/news/seamless/rss.html" target="_blank" rel="noopener"> Требования Дзена к unified-RSS</a></p>'84 '<p><strong>' . esc_html__('Полезные ссылки', 'zhekich-feed-generator-for-dzen') . '</strong></p>' . 85 '<p><a href="https://dzen.ru/help/ru/news/seamless/rss.html" target="_blank" rel="noopener">' . esc_html__('Требования Дзена к unified-RSS', 'zhekich-feed-generator-for-dzen') . '</a></p>' 86 86 ); 87 87 } … … 89 89 private function helpVariantsHtml(): string 90 90 { 91 return '<p> Дзен принимает три схемы unified-RSS — плагин поддерживает все три:</p>'92 . '<p><strong> Вариант 1 (Pro).</strong> Один поток, у каждой записи свой тег <contentType>'93 . '(«Новости и канал» / «Только Новости» / «Только канал») — выбирается на самой записи через meta-box. '94 . ' Подходит, если разные посты должны идти в разные места.</p>'95 . '<p><strong> Вариант 2 (Pro).</strong> Один поток, но у каждой записи два адреса — обычная страница сайта'96 . 'и отдельная теневая страница-зеркало. Нужен, потому что Дзен сверяет заголовок и текст публикации '97 . ' с содержимым страницы по ссылке, а оформление для Новостей и для сайта иногда должно отличаться.</p>'98 . '<p><strong> Вариант 3 (Free).</strong> Два отдельных, жёстко размеченных потока — один целиком для Новостей,'99 . 'другой целиком для канала. Не требует различий между постами — самый низкий порог входа, подходит почти всем '100 . ' сайтам, мигрирующим с Yandex.News Feed by Teplitsa.</p>';91 return '<p>' . esc_html__('Дзен принимает три схемы unified-RSS — плагин поддерживает все три:', 'zhekich-feed-generator-for-dzen') . '</p>' 92 . '<p><strong>' . esc_html__('Вариант 1 (Pro).', 'zhekich-feed-generator-for-dzen') . '</strong> ' 93 . esc_html__('Один поток, у каждой записи свой тег <contentType> («Новости и канал» / «Только Новости» / «Только канал») — выбирается на самой записи через meta-box. Подходит, если разные посты должны идти в разные места.', 'zhekich-feed-generator-for-dzen') 94 . '</p>' 95 . '<p><strong>' . esc_html__('Вариант 2 (Pro).', 'zhekich-feed-generator-for-dzen') . '</strong> ' 96 . esc_html__('Один поток, но у каждой записи два адреса — обычная страница сайта и отдельная теневая страница-зеркало. Нужен, потому что Дзен сверяет заголовок и текст публикации с содержимым страницы по ссылке, а оформление для Новостей и для сайта иногда должно отличаться.', 'zhekich-feed-generator-for-dzen') 97 . '</p>' 98 . '<p><strong>' . esc_html__('Вариант 3 (Free).', 'zhekich-feed-generator-for-dzen') . '</strong> ' 99 . esc_html__('Два отдельных, жёстко размеченных потока — один целиком для Новостей, другой целиком для канала. Не требует различий между постами — самый низкий порог входа, подходит почти всем сайтам, мигрирующим с Yandex.News Feed by Teplitsa.', 'zhekich-feed-generator-for-dzen') 100 . '</p>'; 101 101 } 102 102 103 103 private function helpFaqHtml(): string 104 104 { 105 return '<p><strong>Нужен ли ещё какой-то RSS-плагин для работы?</strong><br>' 106 . 'Нет, Zhekich Feed Generator for Dzen полностью самостоятелен и не зависит от других плагинов.</p>' 107 . '<p><strong>Что делать с Yandex.News Feed by Teplitsa?</strong><br>' 108 . 'Его можно деактивировать — этот плагин полностью закрывает его функциональность (лимит возраста, логотипы, ' 109 . 'исключение рубрик, скрытие автора) в схеме unified-RSS.</p>' 110 . '<p><strong>Какие URL добавлять в кабинет Дзена?</strong><br>' 111 . 'В free-режиме — оба адреса вкладки «Основное». В Pro — один из адресов вкладки «Pro», в зависимости ' 112 . 'от выбранного варианта.</p>'; 105 return '<p><strong>' . esc_html__('Нужен ли ещё какой-то RSS-плагин для работы?', 'zhekich-feed-generator-for-dzen') . '</strong><br>' 106 . esc_html__('Нет, Zhekich Feed Generator for Dzen полностью самостоятелен и не зависит от других плагинов.', 'zhekich-feed-generator-for-dzen') . '</p>' 107 . '<p><strong>' . esc_html__('Что делать с Yandex.News Feed by Teplitsa?', 'zhekich-feed-generator-for-dzen') . '</strong><br>' 108 . esc_html__('Его можно деактивировать — этот плагин полностью закрывает его функциональность (лимит возраста, логотипы, исключение рубрик, скрытие автора) в схеме unified-RSS.', 'zhekich-feed-generator-for-dzen') . '</p>' 109 . '<p><strong>' . esc_html__('Какие URL добавлять в кабинет Дзена?', 'zhekich-feed-generator-for-dzen') . '</strong><br>' 110 . esc_html__('В free-режиме — оба адреса вкладки «Основное». В Pro — один из адресов вкладки «Pro», в зависимости от выбранного варианта.', 'zhekich-feed-generator-for-dzen') . '</p>'; 113 111 } 114 112 … … 143 141 ?> 144 142 <div class="wrap dzen-unified-rss-settings"> 145 <h1> Zhekich Feed Generator for Dzen</h1>143 <h1><?php esc_html_e('Zhekich Feed Generator for Dzen', 'zhekich-feed-generator-for-dzen'); ?></h1> 146 144 <?php $this->renderVariantsOverview(); ?> 147 145 … … 149 147 <a href="<?php echo esc_url(add_query_arg(['page' => self::PAGE_SLUG, 'tab' => 'general'], admin_url('options-general.php'))); ?>" 150 148 class="nav-tab <?php echo $tab === 'general' ? 'nav-tab-active' : ''; ?>"> 151 Основное (Free)149 <?php esc_html_e('Основное (Free)', 'zhekich-feed-generator-for-dzen'); ?> 152 150 </a> 153 151 <a href="<?php echo esc_url(add_query_arg(['page' => self::PAGE_SLUG, 'tab' => 'pro'], admin_url('options-general.php'))); ?>" … … 155 153 Pro 156 154 <?php if (Options::isPro()): ?> 157 <span class="dzen-badge dzen-badge-active"> активна</span>155 <span class="dzen-badge dzen-badge-active"><?php esc_html_e('активна', 'zhekich-feed-generator-for-dzen'); ?></span> 158 156 <?php else: ?> 159 157 <span class="dzen-badge dzen-badge-pro">🔒</span> … … 175 173 ?> 176 174 <div class="notice notice-info inline dzen-variants-overview"> 177 <p><strong> Дзен принимает три схемы unified-RSS:</strong></p>175 <p><strong><?php esc_html_e('Дзен принимает три схемы unified-RSS:', 'zhekich-feed-generator-for-dzen'); ?></strong></p> 178 176 <ol> 179 <li><strong> Вариант 1</strong> — один поток, <contentType> свой у каждой записи (meta-box на посте).<span class="dzen-badge dzen-badge-pro">Pro</span></li>180 <li><strong> Вариант 2</strong> — один поток, у каждой записи два адреса (страница сайта + теневая копия).<span class="dzen-badge dzen-badge-pro">Pro</span></li>181 <li><strong> Вариант 3</strong> — два отдельных потока: весь целиком в Новости, весь целиком в канал. Различий между постами не требует.<span class="dzen-badge dzen-badge-free">Free</span></li>177 <li><strong><?php esc_html_e('Вариант 1', 'zhekich-feed-generator-for-dzen'); ?></strong> — <?php esc_html_e('один поток, <contentType> свой у каждой записи (meta-box на посте).', 'zhekich-feed-generator-for-dzen'); ?> <span class="dzen-badge dzen-badge-pro">Pro</span></li> 178 <li><strong><?php esc_html_e('Вариант 2', 'zhekich-feed-generator-for-dzen'); ?></strong> — <?php esc_html_e('один поток, у каждой записи два адреса (страница сайта + теневая копия).', 'zhekich-feed-generator-for-dzen'); ?> <span class="dzen-badge dzen-badge-pro">Pro</span></li> 179 <li><strong><?php esc_html_e('Вариант 3', 'zhekich-feed-generator-for-dzen'); ?></strong> — <?php esc_html_e('два отдельных потока: весь целиком в Новости, весь целиком в канал. Различий между постами не требует.', 'zhekich-feed-generator-for-dzen'); ?> <span class="dzen-badge dzen-badge-free">Free</span></li> 182 180 </ol> 183 <p>Подробнее — во вкладке <em>Справка</em> в правом верхнем углу этой страницы.</p> 181 <p><?php 182 printf( 183 /* translators: %s: "Справка" (Help) tab label */ 184 esc_html__('Подробнее — во вкладке %s в правом верхнем углу этой страницы.', 'zhekich-feed-generator-for-dzen'), 185 '<em>' . esc_html__('Справка', 'zhekich-feed-generator-for-dzen') . '</em>' 186 ); 187 ?></p> 184 188 </div> 185 189 <?php … … 197 201 <table class="form-table"> 198 202 <tr> 199 <th><label for="max_age_days"> Максимальный возраст записей (дни)</label></th>203 <th><label for="max_age_days"><?php esc_html_e('Максимальный возраст записей (дни)', 'zhekich-feed-generator-for-dzen'); ?></label></th> 200 204 <td> 201 205 <input type="number" min="0" id="max_age_days" 202 206 name="<?php echo esc_attr($key); ?>[max_age_days]" 203 207 value="<?php echo esc_attr($options['max_age_days']); ?>"> 204 <p class="description"> Только для потока Новостей — фильтр по дате публикации.</p>205 </td> 206 </tr> 207 <tr> 208 <th><label for="logo_url"> Логотип (URL)</label></th>208 <p class="description"><?php esc_html_e('Только для потока Новостей — фильтр по дате публикации.', 'zhekich-feed-generator-for-dzen'); ?></p> 209 </td> 210 </tr> 211 <tr> 212 <th><label for="logo_url"><?php esc_html_e('Логотип (URL)', 'zhekich-feed-generator-for-dzen'); ?></label></th> 209 213 <td> 210 214 <input type="url" class="regular-text" id="logo_url" … … 214 218 </tr> 215 219 <tr> 216 <th><label for="logo_square_url"> Квадратный логотип (URL)</label></th>220 <th><label for="logo_square_url"><?php esc_html_e('Квадратный логотип (URL)', 'zhekich-feed-generator-for-dzen'); ?></label></th> 217 221 <td> 218 222 <input type="url" class="regular-text" id="logo_square_url" … … 222 226 </tr> 223 227 <tr> 224 <th><label for="exclude_taxonomy"> Таксономия для исключения</label></th>228 <th><label for="exclude_taxonomy"><?php esc_html_e('Таксономия для исключения', 'zhekich-feed-generator-for-dzen'); ?></label></th> 225 229 <td> 226 230 <select id="exclude_taxonomy" name="<?php echo esc_attr($key); ?>[exclude_taxonomy]"> 227 <option value=""> — не исключать —</option>231 <option value=""><?php esc_html_e('— не исключать —', 'zhekich-feed-generator-for-dzen'); ?></option> 228 232 <?php foreach (get_taxonomies(['public' => true], 'objects') as $taxonomy): ?> 229 233 <option value="<?php echo esc_attr($taxonomy->name); ?>" … … 236 240 </tr> 237 241 <tr> 238 <th><label for="exclude_terms"> ID термов для исключения</label></th>242 <th><label for="exclude_terms"><?php esc_html_e('ID термов для исключения', 'zhekich-feed-generator-for-dzen'); ?></label></th> 239 243 <td> 240 244 <input type="text" class="regular-text" id="exclude_terms" … … 242 246 value="<?php echo esc_attr($options['exclude_terms']); ?>" 243 247 placeholder="671, 812"> 244 <p class="description"> Через запятую, ID термов таксономии выше (например, «Новости компаний»).</p>245 </td> 246 </tr> 247 <tr> 248 <th> Скрыть автора</th>248 <p class="description"><?php esc_html_e('Через запятую, ID термов таксономии выше (например, «Новости компаний»).', 'zhekich-feed-generator-for-dzen'); ?></p> 249 </td> 250 </tr> 251 <tr> 252 <th><?php esc_html_e('Скрыть автора', 'zhekich-feed-generator-for-dzen'); ?></th> 249 253 <td> 250 254 <label> 251 255 <input type="checkbox" name="<?php echo esc_attr($key); ?>[hide_author]" 252 256 <?php checked($options['hide_author']); ?>> 253 не выводить <author> в фиде257 <?php esc_html_e('не выводить <author> в фиде', 'zhekich-feed-generator-for-dzen'); ?> 254 258 </label> 255 259 </td> 256 260 </tr> 257 261 <tr> 258 <th> Включать изображение превью в текст статьи</th>262 <th><?php esc_html_e('Включать изображение превью в текст статьи', 'zhekich-feed-generator-for-dzen'); ?></th> 259 263 <td> 260 264 <label> 261 265 <input type="checkbox" name="<?php echo esc_attr($key); ?>[cover_in_content]" 262 266 <?php checked($options['cover_in_content']); ?>> 263 если в тексте статьи вообще нет картинок — добавить обложку первым элементом267 <?php esc_html_e('если в тексте статьи вообще нет картинок — добавить обложку первым элементом', 'zhekich-feed-generator-for-dzen'); ?> 264 268 </label> 265 <p class="description"> Не дублирует, если в тексте уже есть хотя бы одна картинка.</p>269 <p class="description"><?php esc_html_e('Не дублирует, если в тексте уже есть хотя бы одна картинка.', 'zhekich-feed-generator-for-dzen'); ?></p> 266 270 </td> 267 271 </tr> … … 271 275 272 276 <p class="description"> 273 Free-режим (вариант 3, всегда активен):<br>274 <code><?php echo esc_html(home_url('/feed/dzen-news/')); ?></code> — Новости,275 <code><?php echo esc_html(home_url('/feed/dzen/')); ?></code> — канал.277 <?php esc_html_e('Free-режим (вариант 3, всегда активен):', 'zhekich-feed-generator-for-dzen'); ?><br> 278 <code><?php echo esc_html(home_url('/feed/dzen-news/')); ?></code> — <?php esc_html_e('Новости', 'zhekich-feed-generator-for-dzen'); ?>, 279 <code><?php echo esc_html(home_url('/feed/dzen/')); ?></code> — <?php esc_html_e('канал', 'zhekich-feed-generator-for-dzen'); ?>. 276 280 </p> 277 281 </div> … … 293 297 <div class="postbox"> 294 298 <div class="inside"> 295 <p>Варианты 1 и 2 (по-постовый тип публикации и второй адрес на публикацию) не входят 296 в этот плагин. Их даёт отдельное платное дополнение 297 <strong>Zhekich Feed Generator for Dzen Pro</strong> — устанавливается поверх этого 298 плагина и не распространяется через каталог WordPress.org.</p> 299 <p><a class="button button-primary" href="<?php echo esc_url(self::PURCHASE_URL); ?>" target="_blank" rel="noopener">Подробнее и купить</a></p> 299 <p><?php 300 printf( 301 /* translators: %s: "Zhekich Feed Generator for Dzen Pro" (product name, not translated) */ 302 esc_html__('Варианты 1 и 2 (по-постовый тип публикации и второй адрес на публикацию) не входят в этот плагин. Их даёт отдельное платное дополнение %s — устанавливается поверх этого плагина и не распространяется через каталог WordPress.org.', 'zhekich-feed-generator-for-dzen'), 303 '<strong>Zhekich Feed Generator for Dzen Pro</strong>' 304 ); 305 ?></p> 306 <p><a class="button button-primary" href="<?php echo esc_url(self::PURCHASE_URL); ?>" target="_blank" rel="noopener"><?php esc_html_e('Подробнее и купить', 'zhekich-feed-generator-for-dzen'); ?></a></p> 300 307 </div> 301 308 </div> -
zhekich-feed-generator-for-dzen/trunk/readme.txt
r3618454 r3618717 6 6 Tested up to: 7.0 7 7 Requires PHP: 7.4 8 Stable tag: 1.2. 68 Stable tag: 1.2.7 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 90 90 == Changelog == 91 91 92 = 1.2.7 = 93 * Properly internationalized the plugin: all admin UI strings now go through `__()`/`esc_html__()` 94 with the `zhekich-feed-generator-for-dzen` text domain (Russian as the source/default text, 95 matching the plugin's actual audience), plus `load_plugin_textdomain()` for reliability outside 96 WordPress.org's own translation loading. 97 92 98 = 1.2.6 = 93 99 * No code changes. Added plugin page assets (icon, banner, screenshots) and documented the -
zhekich-feed-generator-for-dzen/trunk/zhekich-feed-generator-for-dzen.php
r3618454 r3618717 4 4 * Plugin URI: https://github.com/eugenekrukov/zhekich-feed-generator-for-dzen 5 5 * Description: Самостоятельный генератор unified-RSS фида для Дзена (Новости + канал) по правилам от 13.07.2026 (dzen.ru/help/ru/news/seamless/rss.html). Замена для заброшенного Yandex.News Feed by Teplitsa. 6 * Version: 1.2. 66 * Version: 1.2.7 7 7 * Requires PHP: 7.4 8 8 * Author: Eugene Krukov … … 16 16 define('DZEN_UNIFIED_RSS_DIR', plugin_dir_path(__FILE__)); 17 17 define('DZEN_UNIFIED_RSS_URL', plugin_dir_url(__FILE__)); 18 define('DZEN_UNIFIED_RSS_VERSION', '1.2. 6');18 define('DZEN_UNIFIED_RSS_VERSION', '1.2.7'); 19 19 20 20 spl_autoload_register(static function (string $class): void { … … 37 37 register_deactivation_hook(__FILE__, 'flush_rewrite_rules'); 38 38 39 add_action('init', static function (): void { 40 load_plugin_textdomain('zhekich-feed-generator-for-dzen', false, dirname(plugin_basename(__FILE__)) . '/languages'); 41 }); 42 39 43 add_action('plugins_loaded', static function (): void { 40 44 \DzenUnifiedRss\Plugin::instance()->init();
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)