加载没有帖子类型的模板文件

时间:2019-05-16 作者:Abdul Sadik Yalcin

有没有一种方法可以在没有帖子的情况下加载模板文件?我正在通过API加载一组数据。设置我的索引页,但由于这些帖子不在WP注册表/数据库中,因此使用单个模板文件时大脑冻结。

// Template files
events-index.php
events-single.php
事件索引:

 <?php $events = $api_data // Data retrieved from API

   if ( $upcoming_events->have_posts() ) :
     while ( $upcoming_events->have_posts() ) : $upcoming_events->the_post();

     $custom_link = sanitize_title( get_the_title() );
     $custom_link = rtrim($custom_link, \'/\');
     $custom_link .= \'?\' . get_the_ID(); ?>

     <a href="<?php echo $custom_link; ?>">
     // This link to a custom template file
 <?php } ?>

2 个回复
最合适的回答,由SO网友:Alexander Holsgrove 整理而成

您可以使用设置自定义重写规则add_rewrite_rule 并将这些请求发送到自定义页面。

您的URL结构可能是/index-page/single-event-slug 该规则将所有单个事件指向一个单独的页面,您可以在其中设置模板events-single.php.

另一个选项是将事件作为查询传入/index-page?event=single-event-slug/index-page?event=123. 您需要将此参数注册到add_query_arg 然后通过更改索引模板以使用事件模板template_include

SO网友:Abdul Sadik Yalcin

function prefix_register_query_var( $vars ) {
    $vars[] = \'eid\';

    return $vars;
}
add_filter( \'query_vars\', \'prefix_register_query_var\' );
function prefix_rewrite_templates() {
    if ( get_query_var( \'eid\' ) ) {
        add_filter( \'template_include\', function() {
            return get_template_directory() . \'/events-single.php\';
        });
    }
}
add_action( \'template_redirect\', \'prefix_rewrite_templates\' );
添加$var 指向循环中的URL:

$url = add_query_arg( array(
    \'eid\' => get_the_ID(),
) );

相关推荐

Custom term templates

所以,我在网上做了一些研究,但没有找到可靠的答案,所以我来了。我需要为特定类别创建自定义woocommerce类别页面。例如,我有一个类别叫做“Awesome”。而不是使用由短代码生成的常规类别页面[product_category category=\"something\"], 我想为自定义特定类别页面Awesome.我发现我需要编辑taxonomy-product_cat.php 但我不知道如何将其链接到名为awesome.换句话说,我正在考虑制作php文件的自定义副本,然后将其添加为主题templ