Plugin Directory

Changeset 3673841


Ignore:
Timestamp:
08/31/2026 10:03:33 AM (8 weeks ago)
Author:
aseq111
Message:

1.4.3: add Product Data/FAQ/Content Inserts/Company Website fields, keep Article Length

Location:
lussblog/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lussblog/trunk/aicontent-cloud.php

    r3666584 r3673841  
    44 * Plugin URI: https://lussblog.com
    55 * 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.2
     6 * Version: 1.4.3
    77 * Author: Lussblog
    88 * Author URI: https://lussblog.com
    … …  
    2727// ================================================================
    2828
    29 define('LUSSBL_VERSION', '1.4.2');
     29define('LUSSBL_VERSION', '1.4.3');
    3030define('LUSSBL_PLUGIN_DIR', plugin_dir_path(__FILE__));
    3131define('LUSSBL_PLUGIN_URL', plugin_dir_url(__FILE__));
  • lussblog/trunk/includes/class-admin-settings.php

    r3666584 r3673841  
    284284                $new_options['image_count'] = in_array($count, array(1, 2), true) ? $count : 2;
    285285            }
     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            }
    286290
    287291            // ---- Article image + image prompt ----
    … …  
    521525                        <p class="description">
    522526                            <?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'); ?>
    523550                        </p>
    524551                    </td>
    … …  
    753780                        ? array_values($week[$day_key])
    754781                        : (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
    756783                    $day_times = array_map(function ($t) {
    757784                        return ('' === $t || !preg_match('/^\d{1,2}:\d{2}$/', $t)) ? $t : self::normalize_hhmm($t);
    … …  
    14051432            'wp_post_status'       => isset($options['wp_post_status']) ? $options['wp_post_status'] : 'draft',
    14061433            'image_count'          => isset($options['image_count']) ? (int) $options['image_count'] : 2,
     1434            'article_length'       => isset($options['article_length']) ? (int) $options['article_length'] : 2000,
    14071435        );
    14081436
  • lussblog/trunk/readme.txt

    r3666584 r3673841  
    1 === Lussblog ===
     1=== Lussblog — AI SEO Assistant ===
    22Contributors: aicontentcloud, aseq111
    33Tags: ai, seo, automation, blogging, content
    … …  
    55Tested up to: 7.1
    66Requires PHP: 7.4
    7 Stable tag: 1.4.2
     7Stable tag: 1.4.3
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    134134== Upgrade Notice ==
    135135
     136= 1.4.3 =
     137New 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
    136139= 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.
     140Plugin renamed to Lussblog — AI SEO Assistant.
     141
     142= 1.4.1 =
     143Free plan monthly manual generation limit increased to 10. Upgrade page copy updated.
     144
     145= 1.4.0 =
     146Article 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 =
     149Scheduled 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.
    138150
    139151= 1.2.3 =
    … …  
    154166== Changelog ==
    155167
    156 = 1.4.2 =
     168= 1.4.3 =
    157169* Added: Product Data field — free-text product specs woven into articles verbatim (AI may select but not alter)
    158170* Added: FAQ field — Q:/A: pairs appended verbatim at the end of every article
    … …  
    165177* Fixed: articles could drift into unrelated industries when news keywords loosely matched user keywords
    166178
     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
    167200= 1.2.3 =
    168201* 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.