Discourse插件“Join Discussion Link”部分的模板钩子?

我看到在选择“链接到评论而不显示它们”选项时,我可以更改链接文本本身,但有没有办法在此链接的上方/下方添加文本/HTML?有点像 discourse_replies_html 过滤器,但用于修改 .wpdc-join-discussion div 内部的内容以及“加入讨论链接”在其中的位置。

Kayla,目前没有过滤器或模板可以更改 wpdc-join-discussion div 中的 HTML。您能否分享您期望的结果,即您希望最终得到什么样的 HTML?我会看看是否可以添加一个过滤器来支持您(或许还有其他人)的用例。

您好 Angus,

用例与以下网站相同:

因此,在使用了经典主题的网站上,会有私有的 Discourse 评论和公开的 WordPress 评论。我希望能在“加入讨论”链接上方添加一个标题和一些文本说明,以提供上下文/改善用户体验。我能够通过一个主题默认的小工具区域(位于文章条目之后)和大量的 CSS 来模拟视觉效果,但这在文档结构方面并非理想(在这种情况下,阅读器视图/模式会将小工具识别为文章的一部分,而实际的 .wpdc-join-discussion div 则不会)。我可以创建一个新的小工具区域,使其位于文章层之外,但此自定义在逻辑上应与“加入讨论”链接一起包含在 .wpdc-join-discussion div 中。

好的,谢谢,我将在下一个版本中考虑支持此用例。

1 个赞

感谢您的考虑!我更倾向于像 discourse_replies_html 这样的开放式解决方案,这样我就可以灵活地在 .wpdc-join-discussion 内部添加一个内部“包装器”div,或者将来根据需要添加其他内容。我希望这也能让插件开发保持简单(无需新的管理员界面设置)。

1 个赞

@Kayla 很快就该发布插件的另一个版本了,我想确保我能满足你的需求。我考虑在此处添加一个 wpdc_join_discussion_link_html 过滤器 here

$link_html = '\u003cdiv class=\"wpdc-join-discussion\"\u003e\u003ca class=\"wpdc-join-discussion-link\" href=\"' . esc_url_raw( $discourse_permalink ) . '\"' . $new_tab . '\u003e' . esc_html( $link_text ) . '\u003c/a\u003e\u003c/div\u003e';
$link_html = apply_filters( 'wpdc_join_discussion_link_html', $link_html, $comments_count, $post_id );
return $link_html;

这将起到与 discourse_replies_html 过滤器相同的作用,但用于链接的 HTML。

这对你来说可以吗?

是的,我想是的。只是为了让我清楚,因为我的 PHP 知识水平仅限于根据模式/示例进行操作,所以我可以像这样使用这个过滤器吗?

function custom_discussion_link( $input ) {  
  ob_start();
  ?>
  <div class="wpdc-join-discussion">
    <div class="custom-wrapper-div">
      <h3>Heading</h3>
      <p>Explanation/context yada yada.</p>
      <?php echo '<a class="wpdc-join-discussion-link" href="' . esc_url_raw( $discourse_permalink ) . '"' . $new_tab . '>' . esc_html( $link_text ) . '</a>'; ?>
    </div>
  </div>
  <?php
  $link_html = ob_get_clean();
  return $link_html;
}
add_filter( 'wpdc_join_discussion_link_html', 'custom_discussion_link' );

希望这不会太离谱。:face_with_peeking_eye:

好的,所以我想我需要确保你已经包含了你正在插值的变量,这对于这个过滤器来说是有意义的,即:

apply_filters( 'wpdc_join_discussion_link_html', $link_html, $discourse_permalink, $new_tab, $link_text )

然后你会像这样使用它(注意参数的数量)

function custom_discussion_link( $link_html, $discourse_permalink, $new_tab, $link_text) {  
  ob_start();
  ?>
  <div class="wpdc-join-discussion">
    <div class="custom-wrapper-div">
      <h3>Heading</h3>
      <p>Explanation/context yada yada.</p>
      <?php echo '<a class="wpdc-join-discussion-link" href="' . esc_url_raw( $discourse_permalink ) . '"' . $new_tab . '>' . esc_html( $link_text ) . '</a>'; ?>
    </div>
  </div>
  <?php
  $link_html = ob_get_clean();
  return $link_html;
}
add_filter( 'wpdc_join_discussion_link_html', 'custom_discussion_link', 10, 4 );

新的过滤器将在下一个版本中。由于一些后勤问题,发布将会有轻微延迟,所以下一个版本将在十月初发布。

1 个赞

非常感谢!我会关注下一个版本。:partying_face:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.