feat: release news and store experience updates

This commit is contained in:
Codex
2026-07-26 11:09:11 +08:00
parent 2b37713791
commit c63bef311c
100 changed files with 2519 additions and 105 deletions
+67 -2
View File
@@ -345,9 +345,63 @@ function fragrance_trade_create_required_pages( &$errors ) {
return $result;
}
/**
* Preserve an existing posts page or create the conventional news page.
*
* @param string[] $errors Setup errors collected by the caller.
* @return array{id:int,changed:bool}
*/
function fragrance_trade_ensure_news_page( &$errors ) {
$result = array( 'id' => 0, 'changed' => false );
$current_page_id = absint( get_option( 'page_for_posts', 0 ) );
$current_page = $current_page_id ? get_post( $current_page_id ) : null;
if ( $current_page && 'page' === $current_page->post_type ) {
$result['id'] = $current_page_id;
return $result;
}
$news_page = fragrance_trade_find_required_page( 'news' );
if ( ! $news_page ) {
$news_page_id = wp_insert_post(
array(
'post_type' => 'page',
'post_name' => 'news',
'post_title' => __( '新闻资讯', 'fragrance-trade' ),
'post_status' => 'publish',
),
true
);
if ( is_wp_error( $news_page_id ) ) {
$errors[] = sprintf(
/* translators: %s: error message. */
__( '无法创建新闻资讯页面:%s', 'fragrance-trade' ),
$news_page_id->get_error_message()
);
return $result;
}
$news_page = get_post( $news_page_id );
$result['changed'] = true;
}
$news_page_id = (int) $news_page->ID;
if ( $current_page_id !== $news_page_id ) {
update_option( 'page_for_posts', $news_page_id );
if ( $news_page_id !== absint( get_option( 'page_for_posts', 0 ) ) ) {
$errors[] = __( '无法将新闻资讯页面设置为 WordPress 文章页。', 'fragrance-trade' );
return $result;
}
$result['changed'] = true;
}
$result['id'] = $news_page_id;
return $result;
}
/** Versioned and retryable site setup. */
function fragrance_trade_maybe_setup_site() {
$target_version = 3;
$target_version = 4;
if ( (int) get_option( 'fragrance_trade_schema_version', 0 ) >= $target_version ) {
return;
}
@@ -356,12 +410,13 @@ function fragrance_trade_maybe_setup_site() {
$seed_changed = fragrance_trade_create_seed_services( $errors );
$copy_changed = fragrance_trade_migrate_seed_service_copy( $errors );
$page_result = fragrance_trade_create_required_pages( $errors );
$news_result = fragrance_trade_ensure_news_page( $errors );
if ( ! empty( $page_result['pages']['home'] ) ) {
update_option( 'page_on_front', $page_result['pages']['home'] );
update_option( 'show_on_front', 'page' );
}
if ( $seed_changed || $copy_changed || $page_result['changed'] ) {
if ( $seed_changed || $copy_changed || $page_result['changed'] || $news_result['changed'] ) {
flush_rewrite_rules();
}
@@ -412,6 +467,16 @@ function fragrance_trade_page_status_notice() {
$unpublished[] = $page->post_title;
}
}
$posts_page_id = absint( get_option( 'page_for_posts', 0 ) );
$posts_page = $posts_page_id ? get_post( $posts_page_id ) : null;
if (
$posts_page
&& 'page' === $posts_page->post_type
&& 'publish' !== $posts_page->post_status
&& ! in_array( $posts_page->post_title, $unpublished, true )
) {
$unpublished[] = $posts_page->post_title;
}
if ( ! $unpublished ) {
return;
}