Если в вашу тему встроены параметры темы, то, если бы люди переключили ее, административный аспект темы был бы потерян, если бы он не был в каждой теме, поэтому я бы сделал следующее:
- Сделайте доступные темы для переключения дочерними темами той, которая имеет всю внутреннюю функциональность.
Вам придется редактировать любые темы, которые вы получаете, как дочерние, и делать это каждый раз, когда вы их обновляете. Не так уж и весело, если вы берете эти темы из репозитория или стороннего разработчика.
или
- Превратите функциональность страницы параметров темы в плагин.
Независимо от темы, она будет доступна, и вы можете просто добавить любые другие темы, которые вам нравятся, без необходимости их редактирования.
Что касается кода, есть два фильтра, которые вы можете использовать в зависимости от маршрутизации темы. Для дочерних тем вам нужно только отфильтровать таблицу стилей:
switch_theme()
Примечание. используя add_action( 'setup_theme', 'switch_user_theme' );
function switch_user_theme() {
if ( false != ( $user_theme = get_user_meta( wp_get_current_user()->ID, 'theme', true ) ) ) {
add_filter( 'template', create_function( '$t', 'return "' . $user_theme . '";' ) );
add_filter( 'stylesheet', create_function( '$s', 'return "' . $user_theme . '";' ) );
}
}
function updates the default theme for the whole site, not just the user.