wp_install_defaults() WP 2.1.0

Створює контент за замовчуванням для нововстановлюваного сайту: базові рубрики, пости, сторінки тощо.

Додає:

  • категорію “без категорії” за замовчуванням.
  • перший пост (з коментарем).
  • першу сторінку.
  • сторінку “Політика конфіденційності”.
  • стандартні віджети для теми за промовчанням.

Вся суть цієї функції в тому, що її можна перевизначити у звичайному чи мю-плагіні . Таким чином, можна встановити свої параметри створення базового контенту під час встановлення сайту або налаштувати сайт під час створення чергового сайту мережі мультисайт.

Читайте також питання: Перевизначення wp_install_defaults() .

  • Global. wpdb. $wpdb
  • Global. WP_Rewrite. $wp_rewrite
  • Global. Рядок. $table_prefix

Хуків немає.

Повертає

null. Нічого.

Використання

wp_install_defaults( $user_id );
$user_id
(число) (обов’язковий)
ID користувача – адміністратора сайту мережі.

Приклади

0

#1 Дефольтні опції для сайту мережі

Приклад показує, як встановити дефолтні опції під час створення сайту чи сайту мережі. Для цього потрібно мю-плагін ) з наступним вмістом:

<?php

/*
 * Plugin Name: Custom Installation Script
 * Description: Плагін для автоматичного створення сторінок та категорій на нових сайтах мережі
 */

function wp_install_defaults( $user_id ){

	update_option( 'permalink_structure', '/%postname%/');

	// Не показувати привітання
	update_user_meta($user_id, 'show_welcome_panel', 0);

	// Активація теми
	update_option('template', 'hb-base-theme');
	update_option( 'stylesheet', 'hb-event' );
	update_option('current_theme', 'hb-event');
}

нотатки

  • Global. wpdb. $wpdb WordPress database abstraction object.
  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.
  • Global. Рядок. $table_prefix

список змін

З версії 2.1.0Введено.

Код wp_install_defaults() WP 6.0.2

function wp_install_defaults( $user_id ) {
	Global $wpdb, $wp_rewrite, $table_prefix;

	/ / Default category.
	$cat_name = __( 'Uncategorized' );
	/* translators: Default category slug. */
	$cat_slug = sanitize_title( _x( 'Uncategorized', 'Default category slug' ) );

	if ( global_terms_enabled() ) {
		$cat_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) );
		if ( null == $cat_id ) {
			$wpdb->insert(
				$wpdb->sitecategories,
				array(
					'cat_ID' => 0,
					'cat_name' => $cat_name,
					'category_nicename' => $cat_slug,
					'last_updated' => current_time( 'mysql', true ),
				)
			);
			$cat_id = $wpdb->insert_id;
		}
		update_option( 'default_category', $ cat_id );
	} else {
		$ cat_id = 1;
	}

	$wpdb->insert(
		$wpdb->terms,
		array(
			'term_id' => $cat_id,
			'name' => $cat_name,
			'slug' => $cat_slug,
			'term_group' => 0,
		)
	);
	$wpdb->insert(
		$wpdb->term_taxonomy,
		array(
			'term_id' => $cat_id,
			'taxonomy' => 'category',
			'description' => '',
			'parent' => 0,
			'count' => 1,
		)
	);
	$cat_tt_id = $wpdb->insert_id;

	/ / First post.
	$now = current_time( 'mysql');
	$now_gmt = current_time( 'mysql', 1);
	$first_post_guid = get_option( 'home' ) . '/? p = 1';

	if ( is_multisite() ) {
		$first_post = get_site_option( 'first_post');

		if ( ! $first_post ) {
			$first_post = "<!-- wp:paragraph -->n<p>" .
			/* translators: First post content. %s: Site link. */
			__( 'Welcome to %s. This is your first post. Edit or delete it, then start writing!' ) .
			"</p>n<!-- /wp:paragraph -->";
		}

		$first_post = sprintf(
			$first_post,
			sprintf( '<a href="%s">%s</a>', esc_url( network_home_url() ), get_network()->site_name )
		);

		// Back-compat for pre-4.4.
		$first_post = str_replace( 'SITE_URL', esc_url( network_home_url() ), $first_post );
		$first_post = str_replace( 'SITE_NAME', get_network()->site_name, $first_post );
	} else {
		$first_post = "<!-- wp:paragraph -->n<p>" .
		/* translators: First post content. %s: Site link. */
		__( 'Welcome to WordPress. Це означає, що ви отримаєте перше повідомлення. Еdit або delete it, then start writing!' ) .
		"</p>n<!-- /wp:paragraph -->";
	}

	$wpdb->insert(
		$wpdb->posts,
		array(
			'post_author' => $user_id,
			'post_date' => $now,
			'post_date_gmt' => $now_gmt,
			'post_content' => $first_post,
			'post_excerpt' => '',
			'post_title' => __( 'Hello world!' ),
			/* translators: Default post slug. */
			'post_name' => sanitize_title( _x( 'hello-world', 'Default post slug' ) ),
			'post_modified' => $now,
			'post_modified_gmt' => $now_gmt,
			'guid' => $first_post_guid,
			'comment_count' => 1,
			'to_ping' => '',
			'pinged' => '',
			'post_content_filtered' => '',
		)
	);

	if ( is_multisite() ) {
		update_posts_count();
	}

	$wpdb->insert(
		$wpdb->term_relationships,
		array(
			'term_taxonomy_id' => $cat_tt_id,
			'object_id' => 1,
		)
	);

	// Default comment.
	if ( is_multisite() ) {
		$first_comment_author = get_site_option( 'first_comment_author');
		$first_comment_email = get_site_option( 'first_comment_email');
		$first_comment_url = get_site_option( 'first_comment_url', network_home_url() );
		$first_comment = get_site_option( 'first_comment');
	}

	$first_comment_author =! empty($first_comment_author)? $first_comment_author : __( 'A WordPress Commenter' );
	$first_comment_email =! empty($first_comment_email)? $first_comment_email : '[email protected]';
	$first_comment_url =! empty($first_comment_url)? $first_comment_url : esc_url( __( 'https://wordpress.org/' ) );
	$first_comment =! empty($first_comment)? $first_comment : sprintf(
		/* translators: %s: Gravatar URL. */
		__(
			'Hi, this is a comment.
Щоб отримати started with moderating, editing, і deleting comments, please visit Comments screen in dashboard.
Commenter avatars come from <a href="%s">Gravatar</a>.'
		),
		esc_url( __( 'https://en.gravatar.com/' ) )
	);
	$wpdb->insert(
		$wpdb->comments,
		array(
			'comment_post_ID' => 1,
			'comment_author' => $first_comment_author,
			'comment_author_email' => $first_comment_email,
			'comment_author_url' => $first_comment_url,
			'comment_date' => $now,
			'comment_date_gmt' => $now_gmt,
			'comment_content' => $first_comment,
			'comment_type' => 'comment',
		)
	);

	/ / First page.
	if ( is_multisite() ) {
		$first_page = get_site_option( 'first_page');
	}

	if ( empty( $first_page ) ) {
		$first_page = "<!-- wp:paragraph -->n<p>";
		/* translators: First page content. */
		$first_page .= __( "Ця мова йде про автентичну сторінку. Вона є різною від blog post because його буде в одному місці і буде відображатися в вашій мережі навколишнього середовища (в найбільшій темі). це потенційний сайт глядачів.
		$first_page .= "</p>n<!-- /wp:paragraph -->nn";

		$first_page .= "<!-- wp:quote -->n<blockquote class="wp-block-quote"><p>";
		/* translators: First page content. */
		$first_page .= __( "Hi there! I'm bike messenger by day, aspiring actor by night, і це є моя website. Я живу в Los Angeles, має великий хлопець намічений Jack, і I як piñ a coladas.(And gettin' caught in the rain.)" );
		$first_page .= "</p></blockquote>n<!-- /wp:quote -->nn";

		$first_page .= "<!-- wp:paragraph -->n<p>";
		/* translators: First page content. */
		$first_page .= __( '...or something like this:' );
		$first_page .= "</p>n<!-- /wp:paragraph -->nn";

		$first_page .= "<!-- wp:quote -->n<blockquote class="wp-block-quote"><p>";
		/* translators: First page content. */
		$first_page .= __( 'The XYZ Doohickey Company була заснована в 1971, і буде been providing quality doohickeys до громадського ever since. Розміщений в Gotham City, XYZ трудиться понад 2,000 людей і кому їсти. ');
		$first_page .= "</p></blockquote>n<!-- /wp:quote -->nn";

		$first_page .= "<!-- wp:paragraph -->n<p>";
		$first_page .= sprintf(
			/* translators: First page content. %s: Site admin URL. */
			__( 'Як новий WordPress user, ви повинні йти до <a href="%s">на вашій табличці</a> до delete цю сторінку і створити нові сторінки для свого content. Have fun!' ),
			admin_url()
		);
		$first_page .= "</p>n<!-- /wp:paragraph -->";
	}

	$first_post_guid = get_option( 'home' ) . '/?page_id=2';
	$wpdb->insert(
		$wpdb->posts,
		array(
			'post_author' => $user_id,
			'post_date' => $now,
			'post_date_gmt' => $now_gmt,
			'post_content' => $first_page,
			'post_excerpt' => '',
			'comment_status' => 'closed',
			'post_title' => __( 'Sample Page' ),
			/* translators: Default page slug. */
			'post_name' => __( 'sample-page' ),
			'post_modified' => $now,
			'post_modified_gmt' => $now_gmt,
			'guid' => $first_post_guid,
			'post_type' => 'page',
			'to_ping' => '',
			'pinged' => '',
			'post_content_filtered' => '',
		)
	);
	$wpdb->insert(
		$wpdb->postmeta,
		array(
			'post_id' => 2,
			'meta_key' => '_wp_page_template',
			'meta_value' => 'default',
		)
	);

	// Privacy Policy page.
	if ( is_multisite() ) {
		// Disable by default unless the suggested content is provided.
		$privacy_policy_content = get_site_option( 'default_privacy_policy_content' );
	} else {
		if ( ! class_exists( 'WP_Privacy_Policy_Content' ) ) {
			include_once ABSPATH . 'wp-admin/includes/class-wp-privacy-policy-content.php';
		}

		$privacy_policy_content = WP_Privacy_Policy_Content::get_default_content();
	}

	if ( ! empty( $privacy_policy_content ) ) {
		$privacy_policy_guid = get_option('home'). '/?page_id=3';

		$wpdb->insert(
			$wpdb->posts,
			array(
				'post_author' => $user_id,
				'post_date' => $now,
				'post_date_gmt' => $now_gmt,
				'post_content' => $privacy_policy_content,
				'post_excerpt' => '',
				'comment_status' => 'closed',
				'post_title' => __( 'Privacy Policy' ),
				/* translators: Privacy Policy page slug. */
				'post_name' => __( 'privacy-policy' ),
				'post_modified' => $now,
				'post_modified_gmt' => $now_gmt,
				'guid' => $privacy_policy_guid,
				'post_type' => 'page',
				'post_status' => 'draft',
				'to_ping' => '',
				'pinged' => '',
				'post_content_filtered' => '',
			)
		);
		$wpdb->insert(
			$wpdb->postmeta,
			array(
				'post_id' => 3,
				'meta_key' => '_wp_page_template',
				'meta_value' => 'default',
			)
		);
		update_option( 'wp_page_for_privacy_policy', 3);
	}

	// Set up default widgets for default theme.
	update_option(
		'widget_block',
		array(
			2 => array( 'content' => '<!-- wp:search /-->' ),
			3 => array( 'content' => '<!-- wp:group --><div class="wp-block-group"><!-- wp:heading --><h2>' . __( 'Recent Posts' ) .'</h2><!-- /wp:heading --><!-- wp:latest-posts /--></div><!-- /wp:group --> '),
			4 => array( 'content' => '<!-- wp:group --><div class="wp-block-group"><!-- wp:heading --><h2>' . __( 'Recent Comments' ) . '</h2><!-- /wp:heading --><!-- wp:latest-comments {"displayAvatar":false,"displayDate":false,"displayExcerpt":false} /--></div><!-- /wp:group -->' ),
			5 => array( 'content' => '<!-- wp:group --><div class="wp-block-group"><!-- wp:heading --><h2>' . __( 'Archives' ) .'</h2><!-- /wp:heading --><!-- wp:archives /--></div><!-- /wp:group -->' ),
			6 => array( 'content' => '<!-- wp:group --><div class="wp-block-group"><!-- wp:heading --><h2>' . __( 'Categories' ) .'</h2><!-- /wp:heading --><!-- wp:categories /--></div><!-- /wp:group -->' ),
			'_multiwidget' => 1,
		)
	);
	update_option(
		'sidebars_widgets',
		array(
			'wp_inactive_widgets' => array(),
			'sidebar-1' => array(
				0 => 'block-2',
				1 => 'block-3',
				2 => 'block-4',
			),
			'sidebar-2' => array(
				0 => 'block-5',
				1 => 'block-6',
			),
			'array_version' => 3,
		)
	);

	if ( ! is_multisite() ) {
		update_user_meta ($ user_id, 'show_welcome_panel', 1);
	} elseif ( ! is_super_admin( $user_id ) && ! metadata_exists( 'user', $user_id, 'show_welcome_panel' ) ) {
		update_user_meta ($ user_id, 'show_welcome_panel', 2);
	}

	if ( is_multisite() ) {
		// Flush rules to натиснути на нову сторінку.
		$wp_rewrite->init();
		$wp_rewrite->flush_rules();

		$user = new WP_User( $user_id );
		$wpdb->update( $wpdb->options, array( 'option_value' => $user->user_email ), array( 'option_name' => 'admin_email' ) );

		// Remove all perms except for the login user.
		$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->usermeta WHERE user_id != %d AND meta_key = %s", $user_id, $table_prefix . 'user_level' ) );
		$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->usermeta WHERE user_id != %d AND meta_key = %s", $user_id, $table_prefix . 'capabilities' ) );

		// Delete any caps that snuck into previously active blog. (Hardcoded to blog 1 for now.)
		// TODO: Get previous_blog_id.
		if ( ! is_super_admin( $user_id ) && 1 != $user_id ) {
			$wpdb->delete(
				$wpdb->usermeta,
				array(
					'user_id' => $user_id,
					'meta_key' => $wpdb->base_prefix . '1_capabilities',
				)
			);
		}
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *