我使用的插件使用自定义帖子内容类型。我想我要做的是一个一般的Wordpress工作流问题,而不是特定于插件的问题。也就是说,LearnDash中的插件。
所以,我有一个帖子类型。叫它Topic
. 我想要一个Topic
拥有Exercises
, 其中练习将是一个内容块。我不需要通过锻炼来确定路线。也就是说,没有url。就像添加一个div或一些block一样,但是可以在其中引用练习。
例如,我可能希望在一个主题页面上有一个右侧边栏,该边栏列出该主题的练习,并带有一个url,该url将一个链接到该练习页面上的锚。
或者在课程的“我的导航”菜单中,您可以看到
Lesson
Topic1
Topic2
etc
我可能想展示
Lesson
Topic1
Exercise1.1
Topic2
Exercise2.1
Exercise2.2
明白我的意思吗?我真的没有必要让练习成为可路由的内容类型。我只需要将练习作为块来使用,然后我就可以作为一个集体的多个参考。
因此,尝试通过插件或编写一些代码来找出可以接受的方法。
谢谢Brian
SO网友:majick
您可以首先在块中添加锚定链接,如下所示:
<a class="block-anchor" name="topic-1" title="Topic 1">
<a class="block-anchor" name="topic-1-exerciseblock-1-1" title="Exercise 1.1">
然后创建一个带有jQuery/javascript的小部件,该小部件将拉取所有锚并列出它们。可能最简单的方法是在文本小部件中放置一个短代码,例如。
[block-anchor-list]
.
add_shortcode(\'block-anchor-list\', \'block_anchor_list\');
function block_anchor_list() {
add_action(\'wp_footer\', \'block_anchor_list_jquery\');
$list = "<div id=\'block-anchor-list\'></div>";
return $list;
}
function block_anchor_list_jquery() {
?>
<script>jQuery(document).ready(function() {
listhtml = \'<ul class="block-anchor-list">\';
jQuery(\'.block-anchor\').each() {
hash = jQuery(this).attr(\'name\');
anchor = jQuery(this).attr(\'title\');
listhtml += \'<li class="block-anchor-item">\';
listhtml += \'<a href="#\'+hash+\'" title="Jump to \'+anchor+\'.">\'+anchor;
listhtml += \'</a></li>\';
}
listhtml += \'</ul>\';
jQuery(\'#block-anchor-list\').html(listhtml);
});</script>
<?php
}
注意,此解决方案依赖于在前端加载jQuery,但也可以使用vanilla javascript完成。