สคริปต์เริ่มต้นสำหรับแง่มุม“ มาตรฐาน” ของเว็บไซต์ WordPress?


23

ฉันจะต้องมีการเขียนสคริปต์เพื่อใช้ติดตั้งใหม่ของ WordPress 3.0.1 และเพิ่มในทุกคุณสมบัติเบื้องต้นสำหรับเว็บไซต์ นี่คือ บริษัท ที่ติดตั้งเว็บไซต์ที่คล้ายกันจำนวนมากและพวกเขาต้องการจุดเริ่มต้นมาตรฐานในการกำหนดค่าและข้อมูล

  • ฉันสงสัยว่ามีคนอื่นทำเช่นนี้หรือไม่และถ้าเป็นเช่นนั้นพวกเขาสามารถแบ่งปันรหัสได้หรือไม่

ฉันจินตนาการว่าเราจะปรับแต่งสคริปต์นี้ทุกครั้งที่สร้างไซต์ใหม่ดังนั้นการเข้ารหัสอย่างหนักก็ใช้ได้แม้ในที่สุด (หลังจากมีประสบการณ์มากพอ) ฉันต้องการแปลงเป็นปลั๊กอิน

นี่คือรายการขั้นพื้นฐานของงานที่ฉันคิดว่าเราต้องการ(สิ่งเหล่านี้ถือว่าฉันเริ่มต้นด้วย WordPress 3.0.1 ติดตั้งแล้วและปลั๊กอินที่กำหนดเองของฉันและธีมที่กำหนดเองคัดลอกไปยังไดเรกทอรีที่เหมาะสม) :

// Create users for the current site
// Delete Hello Dolly Plugin
// Download, Install and Activate repository plugins
// Activate Custom Plugins (assume the plugins are already there)
// Activate Custom Theme
// Delete Hello Post
// Delete Comment on Hello Post
// Create Pages with Starter Content
// Create Initial Custom Post Types with Starter Content
// Create Multiple Menus 
// Create Menu Items for those Menus linking to Pages and wp-login.php
// Create Initial Taxonomy Terms
// Set Desired Permalinks Setting
// Set Static Front Page Setting

เกี่ยวกับมัน (แม้ว่าฉันอาจระบุได้มากขึ้นเมื่อฉันได้รับมัน)

อีกครั้งที่ผมมองหารหัสที่ฉันสามารถคัดลอกและแก้ไขเพื่อให้ฉันไม่ได้จะได้ไม่ต้องคิดออกทุกรายละเอียดเหล่านี้ด้วยตัวเอง(ซึ่งไม่ยากเพียงที่น่าเบื่อและใช้เวลานาน)

โอ้อีกสิ่งหนึ่งฉันต้องเริ่มต้นในตอนนี้ดังนั้นยิ่งเร็วยิ่งดี! :-)


คุณช่วยอธิบายเรื่องนี้ได้Create Menus for Custom Pagesไหม? คุณหมายถึงพื้นที่เมนูส่วนบุคคลในบางหน้าหรืออะไร
Rarst

สวัสดี@Rarst : ฉันต้องสร้างสาม menuseach กับรายการเมนูที่เชื่อมโยงไปยังหน้าแบบกำหนดเองฉันจะเพิ่ม (การใช้งานของฉัน"กำหนดเอง"อาจจะทำให้เกิดความสับสนผมจะวางคำที่และเพียงแค่พูดว่า"หน้า." ) ดังนั้น ฉันต้องเพิ่มสามเมนูและรายการเมนูสำหรับแต่ละรายการที่รายการเมนูหนึ่งต้องการเชื่อมโยงไปยังหน้าเข้าสู่ระบบ
MikeSchinkel

ทำไมลบปลั๊กอิน "Hello Dolly" ฉันหมายความว่าฉันเข้าใจว่าทำไมคุณไม่ต้องการที่นั่น แต่สถานะนั้นไม่ส่งผลกระทบต่อการทำงานของเว็บไซต์และหากคุณใช้ฟังก์ชั่นการอัปเกรดอัตโนมัติมันจะถูกกู้คืนทุกครั้งที่มีการเปิดตัวเวอร์ชั่นใหม่
Doug

2
สวัสดี@Doug : ทำไมลบ Hello Dolly? คำตอบง่ายๆ:ลูกค้าไม่ต้องการมี :)
MikeSchinkel

คำตอบ:


20

อย่างที่ฉันบอกไปแล้วว่าฉันจะต้องเริ่มทำงานกับความต้องการนี้ในทันทีเพื่อที่ฉันจะได้ก้าวหน้า เนื่องจากฉันล้มลงฉันคิดว่ามันเป็นการดีที่สุดที่จะเริ่มโพสต์พวกเขา ถึงกระนั้นหากมีคนอื่นสามารถ / จะโพสต์ (บางส่วน) ส่วนที่ฉันยังไม่ได้ทำฉันยินดีที่จะให้คุณคัดลอกสิ่งที่ฉันได้ทำไปแล้วและเลือกคำตอบของคุณเป็นคำตอบที่ดีที่สุด ก่อนหน้านั้นฉันจะเริ่มโพสต์โค้ด

สิ่งแรก: รวมwp-load.php:

เนื่องจากเรากำลังสร้างไฟล์แบบสแตนด์อโลนในรูทของเว็บไซต์เพื่อเรียกใช้การเริ่มต้นที่จะใช้เฉพาะกับ "bootstrap" ไซต์(ฉันเรียกว่าเหมือง/my-init.php)เราเริ่มต้นด้วยการรวม/wp-load.phpฟังก์ชั่น WordPress API:

<?php
include "wp-load.php";

การสร้างผู้ใช้สำหรับไซต์

เราจะใช้wp_insert_user()ฟังก์ชั่นที่อยู่ใน/wp-includes/registration.phpการสร้างผู้ใช้ของเรา require_once()ไฟล์นี้จะไม่ได้โหลดโดยปริยายดังนั้นเราจะต้องโหลดตัวเองด้วยการเรียกร้องให้

นอกจากนี้เรายังจะใช้get_user_by()ฟังก์ชั่นเพื่อดูว่าผู้ใช้ถูกสร้างขึ้นแล้วหรือไม่ ไม่จำเป็นต้องเรียกใช้รหัสสองครั้งหากไม่ได้ หมายเหตุ:นี่คือรูปแบบที่จะตามมา เช่นสคริปต์ของเราไม่ควรทำซ้ำหรือเขียนทับอะไรถ้าเรียกหลายครั้งโดยเฉพาะอย่างยิ่งหลังจากผู้ใช้เพิ่มหรือเปลี่ยนแปลงข้อมูลสำหรับรายการใด ๆ ที่เราวางแผนที่จะเริ่มต้น

require_once( ABSPATH . WPINC . '/registration.php');     
$user = get_user_by('slug','johnsmith');
if (!is_object($user)) {
  wp_insert_user(array(
    'user_login'        => 'johnsmith',
    'role'              => 'administrator',
    'user_email'        => 'johnsmith@example.com',
    'user_url'          => 'http://example.com',
    'first_name'        => 'John',
    'last_name'         => 'Smith',
    'comment_shortcuts' => '',
    'use_ssl'           => '0',
    'user_pass'         => '12345',
  ));
}

การลบปลั๊กอิน"Hello Dolly"

หากต้องการลบปลั๊กอิน"Hello Dolly" ( ขออภัย Matt )เราจะใช้delete_plugins()ฟังก์ชันนี้ delete_plugins()ต้องการอาร์เรย์ของพา ธ ไฟล์ที่สัมพันธ์กับ/wp-content/includes/ไดเรกทอรี สำหรับปลั๊กอินสวัสดีดอลลี่เส้นทางไฟล์เป็นเพียงhello.phpเพราะปลั๊กอินสวัสดีดอลลี่ไม่ได้เก็บไว้ในไดเรกทอรีของตัวเอง แต่สำหรับปลั๊กอินส่วนใหญ่มันจะอยู่ในรูปแบบของ{$subdir}\{$filename}.php; คือเส้นทางของไฟล์สำหรับ Akismet akismet/akismet.phpเป็น

อย่างไรก็ตามdelete_plugins()ไม่สามารถใช้งานได้จนกว่าเราจะรวมไว้/wp-admin/includes/plugin.phpและยังมีการพึ่งพาwp-admin/includes/file.phpดังนั้นเราrequire_once()ทั้งคู่จึงเรียกก่อนหน้าdelete_plugins()นี้ ในที่สุดเราใช้WP_PLUGIN_DIRค่าคงที่รวมกับfile_exists()เพื่อดูว่ามีไฟล์ปลั๊กอินหลักอยู่ก่อนที่เราจะพยายามลบมันหรือไม่ (ไม่ใช่ว่าจะเป็นเรื่องถ้าเราพยายามลบไฟล์ที่ขาดหายไป แต่มันก็ดูสง่างามกว่าที่จะตรวจสอบก่อนจริง ๆ ด้วยเหตุผลอื่น) :

require_once(ABSPATH . 'wp-admin/includes/plugin.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
if (file_exists(WP_PLUGIN_DIR . '/hello.php'))
  delete_plugins(array('hello.php'));

โปรดทราบว่าบางครั้งdelete_plugins()จะล้มเหลวเนื่องจากการอนุญาตของไฟล์หรืออาจมีการเปิดใช้งานปลั๊กอินหรือเหตุผลอื่น ๆ ที่คุณจะต้องแก้ไขก่อน แต่สำหรับกรณีการใช้งานของเราHello Dollyหายไปโดยไม่มีการต่อสู้

ดาวน์โหลดติดตั้งและเปิดใช้งาน Repository ปลั๊กอิน

ฉันไม่จำเป็นต้องดาวน์โหลดปลั๊กอินจากแหล่งเก็บข้อมูลในตอนนี้(ฉันคิดว่ามันคงจะดีถ้ามี)เราจะปล่อยสไลด์ความต้องการนี้แล้วกลับมาดูอีกครั้งในภายหลัง

เปิดใช้งานปลั๊กอินของคุณ

ถัดไปกำลังเปิดใช้งานปลั๊กอินที่กำหนดเองของเราเอง เรากำลังสมมติว่าเราอัปโหลดไปยังไดเรกทอรีปลั๊กอินแล้วและทั้งหมดที่เราต้องทำเพื่อเปิดใช้งานพวกเขาสำหรับ WordPress ( หมายเหตุ : เทคนิคนี้จะใช้งานได้กับการเปิดใช้งานปลั๊กอินพื้นที่เก็บข้อมูลด้วยเช่นกันมันจะไม่ดาวน์โหลดและติดตั้งก่อน)

เราจะใช้activate_plugin()ฟังก์ชั่นที่delete_plugins()ต้องการ/wp-admin/includes/plugin.phpรวมไว้ แต่ไม่จำเป็น/wp-admin/includes/file.phpในกรณีที่คุณต้องการเปิดใช้งานโดยอัตโนมัติเท่านั้นและไม่ลบ

เราจะทดสอบการมีอยู่อีกครั้ง(ไม่จำเป็นต้องเปิดใช้งานหากไม่ได้มีใช่มั้ย)และเราจะตรวจสอบโดยใช้is_plugin_active()ฟังก์ชั่นที่ปลั๊กอินยังไม่ได้เปิดใช้งาน หมายเหตุฉันใช้ตัวแปรสองสามครั้งคราวนี้ ( $plugin_filepathและ$plugin_dir) เพื่อป้องกันการทำซ้ำตัวระบุปลั๊กอินหลายครั้ง

ตัวอย่างของเราที่ตามมาเปิดใช้งานปลั๊กอินmy-custom-plugin.phpที่อยู่ในmy-custom-pluginไดเรกทอรีย่อย:

require_once(ABSPATH . 'wp-admin/includes/plugin.php');
$plugin_filepath = 'my-custom-plugin/my-custom-plugin.php';
$plugin_dir = WP_PLUGIN_DIR . "/{$plugin_filepath}";
if (file_exists($plugin_dir) && !is_plugin_active($plugin_filepath))
  activate_plugin($plugin_filepath);

เปิดใช้งานธีมที่คุณต้องการ

การเปิดใช้งานชุดรูปแบบนั้นง่ายกว่าการลบหรือเปิดใช้งานปลั๊กอินค่อนข้างพูด switch_theme()เรียกฟังก์ชันหนึ่งคือทั้งหมดที่จำเป็นต้องใช้: switch_theme()ฟังก์ชั่นรับสอง(2)พารามิเตอร์แม่แบบและสไตล์ชีท อย่างน้อยนั่นคือสิ่งที่พารามิเตอร์ตั้งชื่อ คุณอาจคุ้นเคยกับคำว่าTheme ParentและChild Themeมากกว่า

สมมติว่าคุณได้สร้างธีมลูกด้วยธีม TwentyTen เริ่มต้นที่มาพร้อมกับ WordPress เป็นธีมหลักและคุณเรียกมันว่า"ธีมที่กำหนดเองของฉัน"และวางลงใน/wp-content/themes/my-custom-themeไดเรกทอรีคุณจะเปิดใช้งานธีมของคุณโดยใช้สายนี้:

switch_theme('twentyten', 'my-custom-theme');

แต่ถ้ามันไม่ใช่ธีมลูกล่ะ? ง่ายมากเพียงส่งไดเรกทอรีตัวระบุ / ชุดรูปแบบ (เช่นชื่อของไดเรกทอรีย่อย/wp-content/themesที่มีชุดรูปแบบของคุณ)เป็นพารามิเตอร์ทั้งสอง สมมติว่าคุณต้องการเปิดใช้งานชุดรูปแบบเฉพาะเรื่องโดยIan D Stewart ที่คุณเรียกswitch_theme()เช่น:

switch_theme('thematic', 'thematic');

โดยส่วนตัวฉันคิดว่ามันค่อนข้างแปลกที่ต้องติดตามรายละเอียดทั้งสองที่นี่ดังนั้นฉันจึงเขียนฟังก์ชั่นที่เรียกactivate_my_theme()ว่าการตรวจสอบครั้งแรกเพื่อให้แน่ใจว่าget_current_theme()ฟังก์ชั่นและถ้าไม่เปิดใช้งาน คุณต้องบอกธีมลูก(หรือที่เรียกว่า "สไตล์ชีท")และมันจะอธิบายธีมหลักสำหรับคุณ(หรือที่รู้จักว่า "เทมเพลต")โดยการจับรายละเอียดจากget_theme()ฟังก์ชั่น

activate_my_theme('My Current Theme');
function activate_my_theme($theme_name) {
  if ($theme_name!=get_current_theme()) {
    $theme = get_theme($theme_name);
    switch_theme(
      $theme['Template'],
      $theme['Stylesheet']
    );
  }
}

หนึ่งจุดสำคัญที่จะตระหนักถึง ; get_theme()คาดว่าฟังก์ชั่นที่จะผ่านชื่อของธีมเด็กที่ไม่ได้เป็นของกระสุน / directory ระบุธีม (ชื่อมาจากส่วน "ชื่อธีม:" ในส่วนหัวของstyle.cssไฟล์ของธีมโชคดีที่get_current_theme()ฟังก์ชั่นส่งคืนชื่อด้วย)

ตรวจสอบส่วนหัวในstyle.cssไฟล์ของธีมเริ่มต้น WordPress ยี่สิบยี่สิบที่เราเห็นชื่อเป็นจริง'Twenty Ten':

/*
Theme Name: Twenty Ten
Theme URI: http://wordpress.org/
Description: The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.
Author: the WordPress team
Version: 1.1
Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style
*/

การลบโพสต์"Hello World"

ต่อไปเราต้องการลบโพสต์"Hello World" คุณอาจเห็นว่า@Rarstแสดงให้เราเห็นถึงวิธีการใช้wp_delete_post()ฟังก์ชั่นซึ่งเป็นสิ่งที่เราต้องการ $post->IDในขณะที่เขาอธิบายพารามิเตอร์ที่สองพร้อมจะลบโพสต์เมื่อเทียบกับการย้ายไปยังถังขยะและพารามิเตอร์แรกคือ

แน่นอนว่ามันจะเป็นการดีที่จะสามารถระบุกระสุนแทนกระสุนได้$post->IDและดังนั้นฉันจึงตัดสินใจหาวิธีที่จะทำเช่นนั้น หลังจากที่บาง spelunking ฉันพบว่า WordPress มีฟังก์ชั่นการตั้งชื่อที่น่าเสียดายที่เรียกว่าget_page_by_path()ที่จริงช่วยให้เราสามารถมองขึ้นไปประเภทโพสต์ใด ๆ โดยกระสุนของมัน(มันเป็นชื่อที่น่าเสียดายเพราะคุณอาจจะมองข้ามมันเมื่อพยายามที่จะหาสิ่งที่ทำงานร่วมกับประเภทโพสต์อื่นที่ไม่ใช่'page'.)

เมื่อเราผ่าน get_page_by_path()ค่าคงที่ที่กำหนดโดย WordPress OBJECTมันจะกลับมาให้เราโพสต์ในรูปแบบของโพสต์วัตถุ สำหรับพารามิเตอร์ที่สามเราผ่านเพื่อแสดงให้เห็นว่าเราอยากให้มันค้นหาประเภทของการโพสต์'post' 'post'เนื่องจากget_page_by_path()จะส่งคืนออบเจกต์โพสต์ที่เราต้องการหรือส่งคืนnullหากไม่มีโพสต์ที่ตรงกับทากที่เราสามารถตรวจสอบการมีอยู่และทำการค้นหาในเวลาเดียวกัน:

$post = get_page_by_path('hello-world',OBJECT,'post');
if ($post)
  wp_delete_post($post->ID,true);

หมายเหตุ:เราสามารถเรียกใช้รหัสเพื่อลบทุกโพสต์ในฐานข้อมูล แต่ถ้าเรามีเราจะไม่สามารถเรียกใช้รหัสนี้ได้อีกเมื่อเราเพิ่มโพสต์ที่เราต้องการเก็บไว้และนั่นเป็นหนึ่งในข้อ จำกัด การออกแบบของเรา

ต่อไป...

ฉันจะเพิ่มสิ่งนี้ต่อไปเรื่อย ๆ จนกว่าฉันจะทำเสร็จหรือจนกว่าจะมีคนช่วยเหลือ


สิ่งนี้มีประโยชน์จริง ๆ มีโอกาสใดที่จะรวมฟังก์ชั่นที่เหลือของที่นี่?
jjeaton

@jjeaton - คำตอบสั้น: ใช่ แต่ ... คำตอบอีกต่อไป: มันจะเป็นสองสามวันถ้าไม่ใช่สัปดาห์ ฉันได้ทำงานที่สำคัญกับปัญหานี้ตั้งแต่ฉันเขียนล่าสุดที่นี่ แต่ลูกค้าของฉันกำลังผลักดันเพื่อให้โครงการเสร็จและฉันอยู่ข้างหลังดังนั้น ... ถ้าคุณสามารถรอสักครู่ในขณะที่ฉันจะโพสต์มันทันทีที่ฉันสามารถ รับเวลาว่างในการเขียน BTW คุณสนใจเรื่องใดมากที่สุด
MikeSchinkel

แน่นอนไม่มีการเร่งรีบเลย ฉันคิดว่าคำถามนี้จะมีค่าจริงๆและอยากเห็นทางออกทั้งหมด ฉันใช้งานหลาย ๆ เว็บไซต์ของ WordPress และฉันมักจะมองหาวิธีที่จะทำการบำรุงรักษาซ้ำ ๆ โดยอัตโนมัติที่ฉันต้องทำกับพวกเขา (อัปเดตปลั๊กอิน, อัพเกรด, ฯลฯ ) ดังนั้นสิ่งนี้มีค่าจริงๆ
jjeaton

4

ตั้งค่าลิงก์ถาวรที่ต้องการ

โครงการชุดรูปแบบใหม่ (ยอดเยี่ยม) ที่ฉันพบเจอในสัปดาห์นี้ที่เน้นหนักในฟังก์ชั่น HTML5 / CSS3 มีสคริปต์ 'bootstrap' เป็นของตัวเองเพื่อสร้างเนื้อหาสำเร็จรูปรวมการตั้งค่า Permalink ตั้งค่ารูทญาติสำหรับการติดตั้งเว็บไซต์ ฯลฯ คุณสมบัติถูกเรียกเมื่อเปิดใช้งานชุดรูปแบบ โครงการที่เรียกว่ารากและรหัสที่สามารถดาวน์โหลดได้ที่นี่ ; ฉันไม่ได้รับเครดิตสำหรับรหัสนี้ ที่กล่าวว่านี่คือรหัสสำหรับ auto-set / year / postname เป็นโครงสร้าง permalink (และ hooks การเปิดใช้งานด้านล่างสำหรับ $ pagenow ทั่วโลกมีการอธิบายที่นี่: http://foolswisdom.com/wp-activate-theme-actio/ ) .

<?php

    global $pagenow;
    if (is_admin() && 'themes.php' === $pagenow && isset( $_GET['activated'])) {


        // set the permalink structure
        if (get_option('permalink_structure') != '/%year%/%postname%/') { 
            update_option('permalink_structure', '/%year%/%postname%/');
      }

        $wp_rewrite->init();
        $wp_rewrite->flush_rules(); 


    }

?>


โอ้มีแผนจะทำงานกับคำถามนี้ต่อไป ... แต่ก็มีอีกหลายแผนที่ถูกระงับไว้ :) ฉันต้องการทราบว่าเป็นการดีกว่าที่จะเชื่อมโยงไปยังตัวอย่างโค้ดของบุคคลที่สามที่ไม่ใช่การศึกษาอย่างกว้างขวางแทนที่จะโพสต์ธีมที่นี่ ไซต์นี้ให้สิทธิ์ผู้ใช้ภายใต้ใบอนุญาต cc-wiki ดังนั้นสถานการณ์จึงมืดมนและสับสนเมื่อใช้กับรหัส
Rarst

แน่นอนอย่างแน่นอน มีความก้าวหน้าที่น่ากลัวอยู่ที่นี่อย่างไรก็ตาม นั่นเป็นการโทรที่ยอดเยี่ยมสำหรับข้อเสนอแนะของคุณฉันอยู่ในช่วงเวลาหนึ่งหรือสองครั้ง แต่ก็ไม่เคยคิดถึงการออกใบอนุญาตเลย ฉันแก้ไขรหัสของฉันลงและส่วนที่เหลือของรหัสสามารถรับได้ง่ายจากลิงก์ที่ฉันให้ไว้ ขอบคุณสำหรับเคล็ดลับ :)

3

ลบ Hello Post (พร้อมความคิดเห็น)

wp_delete_post( 1, true );

ส่งตรงจากwp_delete_post()เอกสาร พารามิเตอร์ที่สอง nukes มันอย่างสมบูรณ์แทนที่จะย้ายไปที่ถังขยะ

สร้างเมนู

สิ่งนี้จะสร้างเมนูใหม่และเพิ่มหน้าทั้งหมดที่มีอยู่เป็นรายการ ฉันไม่แน่ใจว่าถูกต้องทั้งหมดฉันไม่สามารถรับรายการเมนูเพื่อแสดงPageฉลากเหนือสิ่งอื่นใด อย่างไรก็ตามสมองของฉันกำลังละลายดังนั้นฉันจึงหยุดพัก อาจมีบางคนสามารถอัปเกรดสิ่งนี้เป็นสิ่งที่น่าเชื่อถือยิ่งขึ้น

$menu = wp_create_nav_menu( 'Pages' );
$menu = wp_get_nav_menu_object( 'Pages' );
$pages = get_pages();

foreach( $pages as $page ) {

$item = array(
'menu-item-db-id' => 0,
'menu-item-object-id' => $page->ID,
'menu-item-type' => 'post_type',
'menu-item-status' => 'publish'
);

wp_update_nav_menu_item( $menu->term_id, 0, $item );
}

สวัสดี@Rarst : ขอบคุณสำหรับการแสดงความคิดเห็น อ่าคุณหยิบง่าย ๆ ... ;-) ฉันเพิ่งจะกลับมาเขียนมันขึ้นมา
MikeSchinkel

@MikeSchinkel มีอะไรที่คุณไม่ได้เขียนตอนนี้? มันจะเป็นการสิ้นเปลืองหากคุณดำดิ่งลงไปในรหัสเมนู (มันน่ากลัว) เพื่อให้ได้ผลลัพธ์และพบว่ามันทำไปแล้ว :)
Rarst

สวัสดี@ Rarst! เริ่มต้นที่ส่วนท้ายของรายการหรือไม่ (ขอบคุณล่วงหน้า)
MikeSchinkel

ตกลงฉันจะพยายามจัดการเมนู แต่ไม่มีสัญญา รหัสนั้นซับซ้อนภายใน (ราคาของขนมตาและการใช้งาน) ดังนั้นฉันไม่มั่นใจว่าทักษะของฉันขึ้นอยู่กับมัน
Rarst

เฮ้@Rarst - ฉันทำได้ทุกอย่าง แต่มันอาจจะเป็นอีก 24 ชั่วโมงก่อนที่ฉันจะตอบคำถามให้เสร็จ แค่อยากให้คุณรู้ว่าคุณไม่ได้ฆ่าตัวเองเพื่อให้มันทำงาน ขอบคุณสำหรับความพยายาม
MikeSchinkel

0

หากฉันเข้าใจดีคุณต้องการให้มีการติดตั้งครั้งแรก - ฉันกลัวว่าวิธีการของคุณจะผิดทั้งหมด

วิธีที่ดีกว่าง่ายกว่าและได้มาตรฐานคือการสร้าง install.php และวางไว้ในโฟลเดอร์ wp-content - มันโหลดโดยอัตโนมัติระหว่างการติดตั้ง

คุณสามารถใส่ฟังก์ชั่น wp_install ของคุณเอง (เนื่องจากฟังก์ชัน wordpress own ใช้ถ้า (! function_exist)) เพื่อให้คุณสามารถตั้งค่าตัวเลือกเปิดใช้งานปลั๊กอินเติมโพสต์เริ่มต้นหมวดหมู่แท็กผู้ใช้ ...

ตัวเลือกที่สองอาจเป็นสถานการณ์ที่คุณต้องการล้าง wp ที่มีอยู่แล้วทั้งหมด (เช่นสำหรับรุ่นสาธิตตั้งค่าทุก ๆ 30 นาทีโดยใช้ cron) - คุณสามารถก) ฐานข้อมูลแบบแยกส่วนและใช้ขั้นตอนข้างต้นหรือสร้างปลั๊กอินที่ทำ เหมือนกัน.


2
@Thomas Kapler - ขอบคุณสำหรับคำตอบของคุณ แต่ฉันขอแตกต่างกันไป วิธีการของฉันไม่ใช่"ผิดทั้งหมด" ครั้งแรกสิ่งที่ฉันพูดถึงคือรหัสเดียวกันกับที่คุณจะใช้ในinstall.phpและที่สองมีกรณีการใช้งานอื่น ๆ ที่install.phpไม่สามารถใช้งานได้ ใช่install.phpมีการใช้งานแล้ว แต่ไม่ได้ดูแลรายละเอียดและไม่ได้เป็นยาครอบจักรวาลที่คุณบอกเป็นนัย
MikeSchinkel

0

ลองดูที่สคริปต์การติดตั้งนี้ https://github.com/Pravdomil/WP-Quick-Install

ฉันนำไอเดียของคุณและโค้ดบางอย่างมาและสร้างบางสิ่งที่คุณน่าจะค้นหา

คุณสมบัติคือฐานข้อมูลการตั้งค่าภาษาที่แตกต่างสร้างผู้ใช้ตั้งค่าไซต์พื้นฐานลบปลั๊กอินและเทมเพลตเริ่มต้นดาวน์โหลดติดตั้งและเปิดใช้งานปลั๊กอินและธีม Avatar เริ่มต้น Permalinks หน้าคงที่

ลดลงเพื่อมีส่วนร่วม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.