change template with button

时间:2020-02-24 作者:spok

我用代码创建了插件:

function fxn($theme) {

if(isset($_POST[\'zmien\'])){
    $theme = \'loose\';}
else{
    $theme = \'twentytwenty\';}

return $theme;
}

add_filter(\'template\', \'fxn\');
add_filter(\'option_template\', \'fxn\');
add_filter(\'option_stylesheet\', \'fxn\');
我找到了代码并将其改编为我的网站。我已经创建了这个插件,它只能部分工作。当我单击按钮时,模板会更改,但当我单击新模板上的任何元素时,页面会返回到以前的模板。

如何在浏览页面结束之前更改模板?

1 个回复
SO网友:RiddleMeThis

尝试使用switch_theme().

<?php switch_theme( $stylesheet ) ?>

我个人从未使用过,但听起来像是你想要的。您只需要传递正在使用的样式表名称。

这是我制作的一个非常基本的演示。您基本上只需要以下代码,在这两个主题中都需要这些代码。

<form action="" method="post">
    <input type="radio" id="theme1" name="theme" value="theme1">
    <label for="theme1">Theme1</label><br>
    <input type="radio" id="theme2" name="theme" value="theme2">
    <label for="theme2">Theme2</label><br>
    <input type="submit" value="Submit">
</form>

<?php
    $radioVal = $_POST["theme"];

    if($radioVal == "theme1"){
        switch_theme(\'gemcore-ui\');
        header("Refresh:0");
    }
    else if ($radioVal == "theme2"){
        switch_theme(\'testtheme\');
    }
?>
我对此进行了测试,效果很好,但之后我需要刷新页面,所以我添加了标题(“刷新:0”)。您还可以根据需要添加任意多个收音机选项。

相关推荐

Switch role on submit button

我在一个锦标赛网站上工作。注册后,您拥有“成员”角色,您可以创建一个CPT“团队”。我创建了一个“TeamAdmin”角色,可以edit_published_posts, 例如,TeamAdmin可以更改团队名称。我的问题是如何在提交按钮上切换角色,例如在团队的创建开关上,将角色开关切换到“TeamAdmin”?