Changeset 3673841
- Timestamp:
- 08/31/2026 10:03:33 AM (8 weeks ago)
- Location:
- lussblog/trunk
- Files:
-
- 3 edited
-
aicontent-cloud.php (modified) (2 diffs)
-
includes/class-admin-settings.php (modified) (4 diffs)
-
readme.txt (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lussblog/trunk/aicontent-cloud.php
r3666584 r3673841 4 4 * Plugin URI: https://lussblog.com 5 5 * Description: AI-powered content curation automation — automatically collect industry news, generate SEO-optimized blog posts, and save drafts to your WordPress site 6 * Version: 1.4. 26 * Version: 1.4.3 7 7 * Author: Lussblog 8 8 * Author URI: https://lussblog.com … … 27 27 // ================================================================ 28 28 29 define('LUSSBL_VERSION', '1.4. 2');29 define('LUSSBL_VERSION', '1.4.3'); 30 30 define('LUSSBL_PLUGIN_DIR', plugin_dir_path(__FILE__)); 31 31 define('LUSSBL_PLUGIN_URL', plugin_dir_url(__FILE__)); -
lussblog/trunk/includes/class-admin-settings.php
r3666584 r3673841 284 284 $new_options['image_count'] = in_array($count, array(1, 2), true) ? $count : 2; 285 285 } 286 if (isset($_POST['lussbl_article_length'])) { 287 $length = (int) sanitize_text_field(wp_unslash($_POST['lussbl_article_length'])); 288 $new_options['article_length'] = max(2000, min(20000, $length)); 289 } 286 290 287 291 // ---- Article image + image prompt ---- … … 521 525 <p class="description"> 522 526 <?php esc_html_e('Number of AI-generated images created for each blog post and embedded in WordPress.', 'lussblog'); ?> 527 </p> 528 </td> 529 </tr> 530 531 <!-- Article Length --> 532 <tr> 533 <th scope="row"> 534 <label for="lussbl_article_length"><?php esc_html_e('Article Length', 'lussblog'); ?></label> 535 </th> 536 <td> 537 <select id="lussbl_article_length" name="lussbl_article_length"> 538 <?php 539 $length_options = array(2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000); 540 $current_length = isset($options['article_length']) ? (int) $options['article_length'] : 2000; 541 foreach ($length_options as $len) : 542 ?> 543 <option value="<?php echo esc_attr($len); ?>" <?php selected($current_length, $len); ?>> 544 <?php echo esc_html(number_format_i18n($len) . ' words'); ?> 545 </option> 546 <?php endforeach; ?> 547 </select> 548 <p class="description"> 549 <?php esc_html_e('Target word count for each generated article. Actual output will be within ±500 words of your selected target (e.g. selecting 2000 produces 1500-2500 words).', 'lussblog'); ?> 523 550 </p> 524 551 </td> … … 753 780 ? array_values($week[$day_key]) 754 781 : (isset($week[$day]) && is_array($week[$day]) ? array_values($week[$day]) : array()); 755 // 回显时也把分钟归零,避免旧数据里的分钟槽位(如 08:30)被显示出来782 // Normalize echoed times to whole hours so legacy minute slots (e.g. 08:30) are not shown 756 783 $day_times = array_map(function ($t) { 757 784 return ('' === $t || !preg_match('/^\d{1,2}:\d{2}$/', $t)) ? $t : self::normalize_hhmm($t); … … 1405 1432 'wp_post_status' => isset($options['wp_post_status']) ? $options['wp_post_status'] : 'draft', 1406 1433 'image_count' => isset($options['image_count']) ? (int) $options['image_count'] : 2, 1434 'article_length' => isset($options['article_length']) ? (int) $options['article_length'] : 2000, 1407 1435 ); 1408 1436 -
lussblog/trunk/readme.txt
r3666584 r3673841 1 === Lussblog ===1 === Lussblog — AI SEO Assistant === 2 2 Contributors: aicontentcloud, aseq111 3 3 Tags: ai, seo, automation, blogging, content … … 5 5 Tested up to: 7.1 6 6 Requires PHP: 7.4 7 Stable tag: 1.4. 27 Stable tag: 1.4.3 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 134 134 == Upgrade Notice == 135 135 136 = 1.4.3 = 137 New content fields added: Product Data, FAQ, Content Inserts, and Company & Product Website with one-click Fetch. Articles now generate primarily from your input with an AI self-review pass, and the "Other" industry no longer collects preset news. Article Length (2,000–20,000 words) remains available in Settings. 138 136 139 = 1.4.2 = 137 New user-controlled content fields: Product Data, FAQ, Content Inserts, and Company & Product Website with one-click fetch. Improved news relevance filtering — articles are now generated primarily from your input, and irrelevant news is ignored. Other industry no longer collects preset news. Added AI self-review and humanization polish for every article. 140 Plugin renamed to Lussblog — AI SEO Assistant. 141 142 = 1.4.1 = 143 Free plan monthly manual generation limit increased to 10. Upgrade page copy updated. 144 145 = 1.4.0 = 146 Article Length setting is now available. After updating, open Lussblog Settings and select your preferred target word count (2,000–20,000 words), then Save to sync with the cloud. Generated articles will fall within ±500 words of your target. 147 148 = 1.3.0 = 149 Scheduled publishing is now hourly and cloud-triggered, so posts publish on time even when WP-Cron is disabled. Publish time slots are restricted to whole hours. After updating, open any Lussblog page once so the legacy 15-minute schedule migrates to the new hourly schedule. 138 150 139 151 = 1.2.3 = … … 154 166 == Changelog == 155 167 156 = 1.4. 2=168 = 1.4.3 = 157 169 * Added: Product Data field — free-text product specs woven into articles verbatim (AI may select but not alter) 158 170 * Added: FAQ field — Q:/A: pairs appended verbatim at the end of every article … … 165 177 * Fixed: articles could drift into unrelated industries when news keywords loosely matched user keywords 166 178 179 = 1.4.2 = 180 * Changed: Plugin display name updated to "Lussblog — AI SEO Assistant" 181 182 = 1.4.1 = 183 * Changed: Free plan monthly manual generation limit increased from 3 to 10 184 * Changed: Upgrade page now displays "A few articles per month" instead of a fixed number 185 186 = 1.4.0 = 187 * Added: Article Length selector in Settings — choose target word count from 2,000 to 20,000 words (1,000-word increments); generated articles fall within ±500 words of the selected target 188 * Added: article length preference syncs to the cloud tenant profile on Save 189 * Fixed: draft content truncation — rewritten image insertion logic prevents HTML structure corruption when articles contain blockquotes (previously, content after the first image could be lost) 190 * Fixed: news summary blockquote no longer leaks into the article body on import 191 * Fixed: duplicate H1 heading removed from imported drafts (post title no longer repeated as H1 in content) 192 * Improved: preprocess_markdown() cleans generated markdown before WordPress import to ensure valid Gutenberg blocks 193 194 = 1.3.0 = 195 * Added: cloud-triggered publishing endpoint — the cloud backend pings your site at each scheduled slot, so scheduled posts publish on time even when WP-Cron is disabled 196 * Improved: scheduled publishing pipeline now runs every hour instead of every 15 minutes; the legacy 15-minute schedule auto-migrates on the next admin page load 197 * Improved: publish time slots are now restricted to whole hours via a dropdown; any legacy minute values are normalized to :00 when displayed 198 * Changed: removed the separate Daily Generation Time setting — content generation is fixed at 08:30 and publishing follows your publish slots 199 167 200 = 1.2.3 = 168 201 * Added: scheduled publishing now saves posts as drafts 30 minutes before each publish slot for manual review, then auto-publishes unreviewed drafts
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)