9

フォルダを作成し、Wordpressを解凍し、サイトのデータベースを作成するこの小さなBASHスクリプトを作成しました。

最後のステップは、実際にWordpressをインストールすることです。これには通常、ブラウザーでinstall.phpを指定し、GUIでフォームに入力することが含まれます。

これをBASHシェルから実行したいのですが、wp_install()を呼び出して、必要なパラメーターを渡す方法がわかりません。

-admin_email
-admin_password
-weblog_title
-user_name

(install.phpの85行目)

これも同様の質問ですが、Pythonで

#!/bin/bash

#ask for the site name
echo "Site Name:"
read name
# make site directory under splogs
mkdir /var/www/splogs/$name
dirname="/var/www/splogs/$name"
#import wordpress from dropbox
cp -r  ~/Dropbox/Web/Resources/Wordpress/Core $dirname
cd $dirname
#unwrap the double wrap
mv Core/* ./ 
rm -r Core
mv wp-config-sample.php wp-config.php 
sed -i 's/database_name_here/'$name'/g' ./wp-config.php
sed -i 's/username_here/root/g' ./wp-config.php
sed -i 's/password_here/mypassword/g' ./wp-config.php
cp -r ~/Dropbox/Web/Resources/Wordpress/Themes/responsive $dirname/wp-content/t$
cd $dirname

CMD="create database $name"
mysql -uroot -pmypass -e "$CMD"

ブラウザを開かなくてもインストーラーを自動的に実行するようにスクリプトを変更するにはどうすればよいですか?

4

3 に答える 3

8

Drupal のDrushに基づくwp-cliを確認してください。

wp core install --url=url --title=site-title [--admin_name=username] --admin_email=email --admin_password=password

すべてのコマンド:

wp core [download|config|install|install_network|version|update|update_db]
wp db [create|drop|optimize|repair|connect|cli|query|export|import]
wp eval-file
wp eval
wp export [validate_arguments]
wp generate [posts|users]
wp home
wp option [add|update|delete|get]
wp plugin [activate|deactivate|toggle|path|update|uninstall|delete|status|install]
wp post-meta [get|delete|add|update]
wp post [create|update|delete]
wp theme [activate|path|delete|status|install|update]
wp transient [get|set|delete|type]
wp user-meta [get|delete|add|update]
wp user [list|delete|create|update]
于 2012-07-22T01:58:55.017 に答える
4

私はあなたと同じ問題を抱えていました。ビクターの方法を試しましたが、うまくいきませんでした。私はいくつかの編集を行いました、そしてそれは今うまくいきます!コードを機能させるには、スクリプト内にphpタグを追加する必要があります。そうしないと、ターミナルにエコーするだけです。

私のスクリプトは、install.phpを完全にバイパスしてupgrade.phpのwp_install関数を直接呼び出します(他のファイルを編集する必要はありません)。

script.shという名前のスクリプトを作成し、実行可能にして、wp-adminディレクトリにドロップし、ターミナルから実行しました。

#!/usr/bin/php
<?php

function get_args()
{
        $args = array();
        for ($i=1; $i<count($_SERVER['argv']); $i++)
        {
                $arg = $_SERVER['argv'][$i];
                if ($arg{0} == '-' && $arg{1} != '-')
                {
                        for ($j=1; $j < strlen($arg); $j++)
                        {
                                $key = $arg{$j};
                                $value = $_SERVER['argv'][$i+1]{0} != '-' ? preg_replace(array('/^["\']/', '/["\']$/'), '', $_SERVER['argv'][++$i]) : true;
                                $args[$key] = $value;
                        }
                }
                else
                        $args[] = $arg;
        }

        return $args;
}

// read commandline arguments
$opt = get_args();

define( 'WP_INSTALLING', true );

/** Load WordPress Bootstrap */
require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );

/** Load WordPress Administration Upgrade API */
require_once( dirname( __FILE__ ) . '/includes/upgrade.php' );

/** Load wpdb */
require_once(dirname(dirname(__FILE__)) . '/wp-includes/wp-db.php');

$result = wp_install($opt[0], $opt[1], $opt[2], false, '', $opt[3]);
?>

私はこのようにファイルを呼び出しました:# ./script.sh SiteName UserName email@address.com Password

于 2012-06-05T16:14:44.050 に答える
3

おそらく、Wordpress の元のインストーラーを少し変更する必要があります。

まず、ラッパー php CLI スクリプトを作成します。その名前をwrapper.sh次のようにします。

#!/usr/bin/php -qC

function get_args()
{
        $args = array();
        for ($i=1; $i<count($_SERVER['argv']); $i++)
        {
                $arg = $_SERVER['argv'][$i];
                if ($arg{0} == '-' && $arg{1} != '-')
                {
                        for ($j=1; $j < strlen($arg); $j++)
                        {
                                $key = $arg{$j};
                                $value = $_SERVER['argv'][$i+1]{0} != '-' ? preg_replace(array('/^["\']/', '/["\']$/'), '', $_SERVER['argv'][++$i]) : true;
                                $args[$key] = $value;
                        }
                }
                else
                        $args[] = $arg;
        }

        return $args;
}

// read commandline arguments
$opt = get_args();

require "install.php";

これにより、コマンド ラインからスクリプトを呼び出し、引数を $opt 数値配列に直接渡すことができます。

次に、定義した厳密な順序で必要な変数を渡すことができます。たとえば、次のようになります。

./wrapper.sh <admin_email> <admin_password> <weblog_title> <user_name>

では、install.php前述の変数の定義を次のように変更する必要があります。

global $opt;

$admin_email = $opt[0];
$admin_password = $opt[1];
$weblog_title = $opt[2];
$user_name = $opt[3];

次に、インストール スクリプトにジョブを実行させます。

これはテストされていない方法であり、必要に応じて変更することもできます。これは主に、ラッパー php/cli スクリプトを使用して必要な変数を定義し、HTTP REQUEST / クエリ文字列を介して変数を送信する必要がない場合のガイドラインです。多分それは物事を成し遂げるためのかなり奇妙な方法なので、建設的/破壊的なフィードバックをお気軽にお寄せください:-)

于 2012-04-09T11:25:10.847 に答える