WordPress将内容块添加到帖子并将其作为多对一关系引用的方法是什么?

时间:2019-10-09 作者:Brian

我使用的插件使用自定义帖子内容类型。我想我要做的是一个一般的Wordpress工作流问题,而不是特定于插件的问题。也就是说,LearnDash中的插件。

所以,我有一个帖子类型。叫它Topic. 我想要一个Topic 拥有Exercises, 其中练习将是一个内容块。我不需要通过锻炼来确定路线。也就是说,没有url。就像添加一个div或一些block一样,但是可以在其中引用练习。

例如,我可能希望在一个主题页面上有一个右侧边栏,该边栏列出该主题的练习,并带有一个url,该url将一个链接到该练习页面上的锚。

或者在课程的“我的导航”菜单中,您可以看到

Lesson
   Topic1
   Topic2
etc
我可能想展示

Lesson
  Topic1
  Exercise1.1
  Topic2
  Exercise2.1
  Exercise2.2
明白我的意思吗?我真的没有必要让练习成为可路由的内容类型。我只需要将练习作为块来使用,然后我就可以作为一个集体的多个参考。

因此,尝试通过插件或编写一些代码来找出可以接受的方法。

谢谢Brian

1 个回复
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完成。

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register