然而wordpress還蠻常更新的,包括wordpress本身的程式和plugin。
而更新的程序還挺麻煩的。
因此,那天突然想到說,我可以把程式用symbolic的方式來實作。
然而多套的wordpress用同一套code。
大家就來看看怎麼做吧!
限unix主機哦!(而且要能夠以ssh登入)
後來有去參考了一些國外的文章。
還有官方推薦的project。
官方推薦的project還有另外安裝,我是沒試過,但總覺得這些東西自己來,比較能夠控制。
然而照著國外的文章的方式實作,卻會導致一些問題,沒關係,等等都可以解決。
先解釋一下原理,wordpress使用者的文章放在資料庫,使用者上傳的圖片都放在
./wp-content/
而plugin放在
./wp-content/plugins/*
但plugins裡面的資料是不會變的,也不會紀錄資料在裡面(記在資料庫)。
因此要建立兩個code base,一個是plugin, 一個是wordpress core(核心)
下列流程只適用於把專案建好的情況下。
詳細步驟如下:
備份資料
請記得,這很重要!
把cache關閉
不然連發生錯誤的時候都不知道
建立資料匣
選定兩個路徑來放置 wordpress的最新版本以及plugin
wordpress core放在 /home/www/public_html/pack/wordpress/
plugin放在 /home/www/public_html/pack/wordpress-plugins/
語言檔放在 /home/www/public_html/pack/wordpress-languages/
建立資料
去下載wordpress最新版本的code放進去
如果我原本的專案放在
/home/www/public_html/sopili.dev/
那我就把 /home/www/public_html/sopili.dev/wp-content/plugins/* 都放到
/home/www/public_html/pack/wordpress-plugins/*
把語言檔 /home/www/public_html/sopili.dev/wp-content/languages/* 都放到
/home/www/public_html/pack/wordpress-languages/*
修改資料
由於wp裡面常用到ABSPATH的變數,但卻是由
wp-config.php和wp-load.php產生的
產生的方式是 dirname(__FILE__);
但這卻會產生 不正確的路徑,因此要修改這兩隻。
到 /home/www/public_html/pack/wordpress/wp-load.php
define( 'ABSPATH', dirname(__FILE__) . '/' );
改成
define( 'ABSPATH', $_SERVER['DOCUMENT_ROOT']. '/' );
再到原本的專案底下,把 /home/www/public_html/sopili.dev/wp-config.php
在 /* That's all, stop editing! Happy blogging. */ 的上面,加一行。
define( 'ABSPATH', $_SERVER['DOCUMENT_ROOT']. '/' );
把所有的code換成捷徑的方式
cd /home/www/public_html/sopili.dev/
rm index.php && ln -s /home/www/public_html/pack/wordpress/index.php index.php
rm license.txt && ln -s /home/www/public_html/pack/wordpress/license.txt license.txt
rm readme.html && ln -s /home/www/public_html/pack/wordpress/readme.html readme.html
rm wp-app.php && ln -s /home/www/public_html/pack/wordpress/wp-app.php wp-app.php
rm wp-atom.php && ln -s /home/www/public_html/pack/wordpress/wp-atom.php wp-atom.php
rm wp-blog-header.php && ln -s /home/www/public_html/pack/wordpress/wp-blog-header.php wp-blog-header.php
rm wp-comments-post.php && ln -s /home/www/public_html/pack/wordpress/wp-comments-post.php wp-comments-post.php
rm wp-commentsrss2.php && ln -s /home/www/public_html/pack/wordpress/wp-commentsrss2.php wp-commentsrss2.php
rm wp-config-sample.php && ln -s /home/www/public_html/pack/wordpress/wp-config-sample.php wp-config-sample.php
rm wp-cron.php && ln -s /home/www/public_html/pack/wordpress/wp-cron.php wp-cron.php
rm wp-feed.php && ln -s /home/www/public_html/pack/wordpress/wp-feed.php wp-feed.php
rm wp-links-opml.php && ln -s /home/www/public_html/pack/wordpress/wp-links-opml.php wp-links-opml.php
rm wp-load.php && ln -s /home/www/public_html/pack/wordpress/wp-load.php wp-load.php
rm wp-login.php && ln -s /home/www/public_html/pack/wordpress/wp-login.php wp-login.php
rm wp-mail.php && ln -s /home/www/public_html/pack/wordpress/wp-mail.php wp-mail.php
rm wp-pass.php && ln -s /home/www/public_html/pack/wordpress/wp-pass.php wp-pass.php
rm wp-rdf.php && ln -s /home/www/public_html/pack/wordpress/wp-rdf.php wp-rdf.php
rm wp-register.php && ln -s /home/www/public_html/pack/wordpress/wp-register.php wp-register.php
rm wp-rss.php && ln -s /home/www/public_html/pack/wordpress/wp-rss.php wp-rss.php
rm wp-rss2.php && ln -s /home/www/public_html/pack/wordpress/wp-rss2.php wp-rss2.php
rm wp-settings.php && ln -s /home/www/public_html/pack/wordpress/wp-settings.php wp-settings.php
rm wp-trackback.php && ln -s /home/www/public_html/pack/wordpress/wp-trackback.php wp-trackback.php
rm xmlrpc.php && ln -s /home/www/public_html/pack/wordpress/xmlrpc.php xmlrpc.php
rm -rf wp-admin && ln -s /home/www/public_html/pack/wordpress/wp-admin wp-admin
rm -rf wp-includes && ln -s /home/www/public_html/pack/wordpress/wp-includes wp-includes
rm -rf wp-content/plugins && ln -s /home/www/public_html/pack/wordpress-plugins wp-content/plugins
rm -rf wp-content/languages && ln -s /home/www/public_html/pack/wordpress-languages wp-content/languages
rm -rf wp-content/languages && ln -s /home/www/public_html/pack/wordpress-languages wp-content/languages
已知問題:
使用wp-super-cache在第一次啟用時,會在 wp-content/wp-cache-config.php 發生錯誤。
去修改這一次,把 Added by WP-Cache Manager 的這一行
改成
define( 'WPCACHEHOME', ABSPATH . "wp-content/plugins/wp-super-cache/" ); //Added by WP-Cache Manager
就可以了!
大功告成
因此,以後更新plugin只要更新一次。
而wordpress core也只需要一次。