Display theme layouts

时间:2017-09-18 作者:Psyrix

我已经做了很多搜索,但还没有真正找到答案。我创建了一个具有广泛自定义选项的主题。对于我的index.php 页面我有各种布局,用户可以从中选择。网格、列表等。

我见过主题演示网站使用布局链接,如mysite.com/?home_layout=grid 例如这是如何实现的?

正在查找有关此问题的任何信息。链接、教程和其他问题。任何能帮助我的东西。

非常感谢您的帮助。

2 个回复
SO网友:Von

我使用multisite做过类似的事情(显示多个主题)。https://codex.wordpress.org/Create_A_Network

SO网友:Johansson

这实际上取决于您是如何实现此功能的,但我将解释我是如何为自己的主题做到这一点的。

假设您已经为主题开发了一个主题选项页面,您可以通过以下方式获得布局的价值:

psyrix_get_theme_option( \'layout\' );
返回的值是一个字符串,例如“grid”。应该有一个函数可以为前端选择适当的模板部件。您可以在该函数中使用过滤器:

function choose_template_for_my_blog( ){
    $layout = psyrix_get_theme_option( \'layout\' );
    $layout = apply_filters(\'psyrix_filter_layout\', $excerpt);
}
现在,您可以创建一个简单的插件,并根据URL查询过滤布局:

add_filter(\'psyrix_filter_layout\',\'filter_demo_layouts\',11,1);
function filter_demo_layouts( ){
    if( isset( $_REQUEST[\'home_layout\'] ) ){
        return $_REQUEST[\'home_layout\'];
    }
}
这样,当您尝试访问mysite.com/?home_layout=grid, 这个grid 值将传递给choose_template_for_my_blog() 函数,该函数将覆盖布局。

这是一个简单的基本示例,说明了如何使用它。您应该添加更多筛选器并清理用户的输入,然后再将其推到已发布状态。

结束

相关推荐