在二十一七子主题中创建自定义列表后模板

时间:2017-02-16 作者:Phil Gyford

我使用了一个基于“217”的子主题,并创建了一个自定义的帖子类型(“review”)。

我想做两页,一页列出“评论”,另一页列出“帖子”和“评论”(按最近情况排序)的混合。

第一次我复制了2017年的index.php, 像page-reviews.php, 并在开头添加了如下代码:

$args = array(
    \'post_type\' => \'review\',
    \'orderby\' => \'date\',
    \'order\' => \'DESC\',
    \'posts_per_page\' => 10,
);
$the_query = new WP_Query( $args );
然后再往下换have_posts()the_post() 具有$the_query->have_posts()$the_query->the_post() 分别地

如果我选择在页面中使用该模板,那么它的工作原理是列出“评论”,但布局完全混乱。学校里有很多课<body> 这会弄乱布局。

例如,标准博客首页,使用index.php, 在其<body> 看起来不错:

blog logged-in admin-bar hfeed has-header-image has-sidebar colors-light customize-support
而我的自定义页面包含以下内容:

page-template page-template-page-postslist page-template-page-postslist-php page page-id-15071 logged-in admin-bar has-header-image page-two-column colors-light customize-support
如何创建一个更像index.php 就它添加的类而言?

2 个回复
SO网友:majick

您可以使用Body Class Filter 为此,需要调整要添加到body 标签

add_filter(\'body_class\',\'review_pages_classes\');
function review_pages_classes($classes) {
    $classes[] = \'blog\';
    return $classes;
}
您需要添加或删除哪些类可能需要反复试验,或者更详细地查看样式表。

SO网友:hamdirizal

在这种情况下,我将创建一个快捷码,您可以将其放在任何您想要的页面上。将以下代码粘贴到functions.php 文件

add_shortcode(\'review-list\', \'show_review_list\');

function show_review_list($attr){
    $args = array(
        \'post_type\' => \'review\',
        \'orderby\' => \'date\',
        \'order\' => \'DESC\',
        \'posts_per_page\' => 10,
    );
    $the_query = new WP_Query( $args );

    ob_start();

    //...
    //Put code from index.php here to get the correct HTML structure
    //just like what you did before
    //

    return ob_get_clean();
}
要使用,请放置[review-list] 页面/帖子上的任意位置。

相关推荐

在带有PHP的子主题中包含style.css

在里面https://codex.wordpress.org/Child_Themes 这是包含样式的最佳实践。css在子主题中,必须将下面的代码放入函数中。php的子主题,但将“父样式”替换为可以在函数中找到的父主题的参数。父主题的php。我在我的主题文件中找不到它,那里也没有多少代码。使用@import包含父主题样式表的方法不适用于我,放入文件的css不会在任何浏览器的站点上显示自己。function my_theme_enqueue_styles() { $parent_s