ログインしていないユーザー向けに特定のテーマを作りたいのですが、テーマやテーマを変更するための機能やプラグインを作成する方法がわからず、ログインしているユーザー向けに別のテーマを残しました。
誰もがこれを行う方法を知っていますか?私が持っていた唯一の手がかりは、関数switch_theme
とis_user_logged_in
ですが、それらをどのようにしてこれを行うために動作させるのか分からないのです。
御時間ありがとうございます。
is_user_logged_in()
は、ゲストとログインした(したがって登録された)ユーザーの違いを判断するために使用できますが、switch_theme( $stylesheet )
は{$wpdb->options}
テーブルの実際のデータベースエントリを変更します。
update_option( 'template', $template );
update_option( 'stylesheet', $stylesheet );
update_option( 'current_theme', $new_name );
if ( count( $wp_theme_directories ) > 1 ) {
update_option( 'template_root', get_raw_theme_root( $template, true ) );
update_option( 'stylesheet_root', get_raw_theme_root( $stylesheet, true ) );
} else {
delete_option( 'template_root' );
delete_option( 'stylesheet_root' );
}
update_option( 'theme_switched', $old_theme->get_stylesheet() );
だから私はそうすることをお勧めしません。ユーザー/ゲストベースで "テーマ"を切り替える - 読み込み:読み込まれたスタイルシート -
$stylesheet = plugins_dir_url( __FILE__ ).'assets/';
$stylesheet .= is_user_logged_in()
? 'style-user.css'
: 'style-guest.css;
wp_enqueue_style(
'main-stylesheet',
$stylesheet
array( 'commons.css' )
1.0
);
ご覧のとおり、私はcommons.css
の依存関係をスタイルシートに追加しています。これは、両方の間で共有されるすべての定義を持つ、もう1つの、以前に登録/エンキューされたスタイルシートです。
WordPressが使用するテーマをtemplate
およびstylesheet
フィルタで上書きすることができます。
/**
* Override the current theme to show non-logged in users.
*
* @link http://wordpress.stackexchange.com/q/142418/1685
*
* @param string $theme
* @return string
*/
function wpse_142418_nopriv_theme( $theme ) {
if ( ! is_user_logged_in() )
$theme = 'mythemefoldername';
return $theme;
}
add_filter( 'stylesheet', 'wpse_142418_nopriv_theme' );
add_filter( 'template', 'wpse_142418_nopriv_theme' );