4

昨日、自己ホスト型 Web サイトの Wordpress に新しいテーマをインストールしました。テーマをプレビューできる機能を認識しており、それを使用してインストールする新しいテーマを選択しました。

問題 Web サイトの通常の操作を中断したくありませんが、この新しいテーマを使用するには多くのカスタマイズが必要です。どうすればいいですか?

私のくだらない解決策 デスクトップで仮想サーバーを実行する唯一の方法ですか? これを行うときに「実際の」サーバーに切り替えるときに通常発生するすべてのエラーは言うまでもなく、これは面倒に思えます。

より良い方法は? SOとWordPressフォーラムでこれを行う方法についての答えを探してきましたが、不足しています. これはよくある質問だと思いました。多分私は間違った検索用語を使用しています[themes, customization, before installing]か???

どんな助けでも大歓迎です!ありがとう!

4

3 に答える 3

4

わかりました、あなたの質問はかなり良いものであり、サイトを更新することを決定したときに同じプロセスを経ている人が少なくないので、フックget_stylesheetget_templateフィルター フックを試してみることにしました。非常に小さなプラグインを使用すると、特定のルールに従って特定のテーマ (この場合はログインしているすべての訪問者ですが、これを変更して必要なロジックを使用することができます) を簡単に適用できることがわかります。

plugins ディレクトリのファイルに入れる必要があるコードは次のとおりです。

<?php 
/*
Plugin Name: Switch Theme
Description: Switches the theme for logged-in visitors, while keeping the current theme for everyone else. !!!NOTE!!! Please back-up your database prior using this plugin - I can't guarantee that it will work with any theme, nor that it won't break your site's set-up - USE AT YOUR OWN RISK(I did a quick test and it seemed to be fine, but haven't done extensive testing).

You don't need to switch to the desired theme before that - you want to keep active the theme that you will display to your visitors - the one that you will see will be used programatically.

Before activating the plugin, change the line that says `private $admin_theme = '';` to `private $admin_theme = 'theme-directory-name';` where "theme-directory-name" is obviously the name of the directory in which the desired theme resides in.
*/

class MyThemeSwitcher {
    private $admin_theme = '';

    function MyThemeSwitcher() {
        add_filter( 'stylesheet', array( &$this, 'get_stylesheet' ) );
        add_filter( 'template', array( &$this, 'get_template' ) );
    }

    function get_stylesheet($stylesheet = '') {
        if ( is_user_logged_in() && $this->admin_theme ) {
            return $this->admin_theme;
        }
        return $stylesheet;
    }

    function get_template( $template ) {
        if ( is_user_logged_in() && $this->admin_theme ) {
            return $this->admin_theme;
        }
        return $template;
    }
}

$theme_switcher = new MyThemeSwitcher();

だから - まず第一にデータベースをバックアップしてください!Twenty Eleven をデフォルト テーマとして、基本的なフレームワーク テーマをカスタム テーマとしてローカルでテストしました。テーマ オプションとナビゲーション メニューは適切に保存されました。

あとは、ファイルを更新するだけです (使用するテーマがあるディレクトリの名前がprivate $admin_theme = '';whereprivate $admin_theme = 'theme-slug';にあるという行を変更します)。theme-slug

また、ライブ サイトに影響を与えずにFront pagePosts pageオプションを変更することも、両方のテーマが使用する共有コンポーネント (サイト名、フロント ページ、投稿ページ、ページごとの投稿、オプション、コンテンツなど)。

したがって、この解決策が自分に適しているかどうかわからない場合は、場合によって異なります。

両方のテーマが比較的複雑でない場合は、おそらくこのハックを使用できるはずです。他の人が提案したように、ウェブサイトの2番目のインストールを行う必要があるかもしれませんが、サブドメインまたはサブディレクトリへの2番目のインストールが最適なオプションだと思います(単にマルチサイトデータベースの移動が通常の WP データベースの移動よりも複雑です)。

于 2012-12-12T09:52:16.233 に答える
2

新しいテーマをカスタマイズしてテストするために、ワードプレスがインストールされたローカル Apache サーバーをセットアップします。カスタマイズが完了したら、テーマをライブ サイトにアップロードしてアクティブ化できます。ダッシュボードで設定する必要がある設定がある場合は、おそらく再度調整する必要があります。これは、テーマを公開する前にテスト/カスタマイズする 1 つの方法です。

于 2012-12-12T08:46:00.347 に答える