feat: release news and store experience updates
This commit is contained in:
+67
-2
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user