是否按与自定义帖子类型相关的路径/插件应用模板?

时间:2017-11-28 作者:nickpish

我有一个名为“project”的自定义帖子类型和一个附带的单视图模板single-project.php 在每个项目的登录页上,我都有子导航,指向查询相关项目(如“相关项目”和“相关资源”)的单独子部分。有没有一种方法可以根据路径和自定义帖子类型创建模板来处理这些页面?例如,如果项目标记为“测试项目”,并且子导航URL指向test-project/related-resources, 我有没有办法创建一个模板来处理related-resources 是否通过引用路径/段塞以及自定义帖子类型自动执行?

感谢您的关注。

1 个回复
最合适的回答,由SO网友:Greg36 整理而成

不能将项目设置为永久链接的基础,因为必须为每个项目输入重写规则。

您可以做的是创建custom taxonomy related-resources:

function wpse_287202_related_resources_taxonomy() {

    $labels = array(
       ...
    );

    $args = array(
        \'labels\'                     => $labels,
        \'hierarchical\'               => true,
        \'public\'                     => true,
        \'show_ui\'                    => true,
        \'show_admin_column\'          => true,
        \'show_in_nav_menus\'          => true,
        \'show_tagcloud\'              => true,
    );
    register_taxonomy( \'related-resources\', array( \'product\', \'post\', \'page\' ), $args );

}
add_action( \'init\', \'wpse_287202_related_resources_taxonomy\', 0 );
它需要与您的product 自定义帖子类型以及要添加到相关资源的帖子、页面或其他自定义帖子类型。您可以通过更改register_taxonomy.

在您的product 自定义帖子类型添加related-resourcestaxonomies:

\'taxonomies\' => array( \'related-resources\' ),
现在,当您编辑项目时,将“惊人的项目17”添加到相关资源分类中,方法与您添加类别并仅检查它所涉及的项目相同。在此设置中,您不能让一个项目成为其他项目的相关资源,但这是可以更改的。

在每个帖子、页面或自定义帖子类型中,除了project 如果您与分类法关联,可以选择“惊人项目17”,它将显示为该特定项目的相关资源。

现在您需要显示所有内容,并知道要使用哪个模板检查WP Hierarchy. 相关资源将使用taxonomy-related-resources.php 文件只需确保排除project 从显示为相关资源分类的一部分开始,通过检查get_post_type().

要在项目页面上显示相关资源的链接,请使用:

$term = get_the_terms( $post->ID, \'related-resources\' )[0];
echo \'<a href="\' . esc_url( get_term_link( $term, \'related-resources\' ) ) . \'">\' . __( \'Related Resoucrces\', \'text_domain\' ) . \'</a>\';
如果事情看起来令人困惑,请阅读更多关于自定义分类法的内容,以及如何将它们与自定义帖子类型一起使用。

结束

相关推荐

Hardcoded paths in my plugin

很抱歉问这个愚蠢的问题:我正在尝试创建一个基本插件,我想从它的主文件中引用与主插件位于同一目录中的两个目录中的文件。我试着这样引用他们:plugin_dir_path( __FILE__ ).\'js/my.js\' 或plugin_dir_path( __FILE__ ).\'imgs/myImg.jpg\'但它确实创造了一条不适合我的道路。如果我对绝对路径进行硬编码,任何操作都可以正常工作,因此这可以正常工作:http://mydomain/blog/wp-content/plugins/hello-