Шаблонный хук для раздела "Ссылка на обсуждение" плагина Discourse?

Я вижу, где можно изменить сам текст ссылки, когда выбрана опция «Ссылка на комментарии без их отображения», но есть ли способ добавить текст/HTML выше или ниже этой ссылки? Что-то вроде фильтра discourse_replies_html, но для изменения содержимого внутри div .wpdc-join-discussion и определения места, куда будет вставлена ссылка «Присоединиться к обсуждению».

Привет, Кайла, сейчас нет фильтра или шаблона для изменения HTML внутри div wpdc-join-discussion. Можешь описать желаемый результат, то есть какой HTML ты хочешь получить в итоге? Я посмотрю, можно ли добавить фильтр, чтобы поддержать твой (и, возможно, других) случай использования.

Привет, Энгус,

Сценарий использования связан с тем же сайтом:

то есть на сайте с классической темой есть приватные комментарии Discourse рядом с публичными комментариями WordPress. Я хотел бы иметь возможность добавить заголовок и текстовое пояснение над ссылкой «Присоединиться к обсуждению» для улучшения контекста и пользовательского опыта. Я могу визуально имитировать это с помощью области виджета по умолчанию темы, которая располагается после входа в запись, и множества CSS-стилей, но с точки зрения структуры документа это не идеально (в данном случае виджет в режиме чтения/просмотра воспринимается как часть статьи, тогда как фактический div .wpdc-join-discussion — нет). Я мог бы создать новую область виджета, расположенную вне слоя статьи, но эта настройка логически должна находиться внутри div .wpdc-join-discussion вместе со ссылкой «Присоединиться к обсуждению».

Хорошо, спасибо. Я рассмотрю возможность поддержки этого варианта использования в следующей версии.

Спасибо за предложение! Я бы предпочел решение открытого типа, подобное discourse_replies_html, чтобы иметь возможность добавлять внутренний «обертывающий» div внутри .wpdc-join-discussion или любые другие элементы, которые могут потребоваться в будущем. Надеюсь, это также упростит разработку плагина (не потребуется новая страница настроек в админ-панели).

@Kayla Скоро выйдет новая версия плагина, и я хочу убедиться, что она учитывает вашу задачу. Я думаю о добавлении фильтра wpdc_join_discussion_link_html здесь

$link_html = '<div class="wpdc-join-discussion"><a class="wpdc-join-discussion-link" href="' . esc_url_raw( $discourse_permalink ) . '"' . $new_tab . '>' . esc_html( $link_text ) . '</a></div>';
$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>Заголовок</h3>
      <p>Пояснение/контекст, blah blah.</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>Заголовок</h3>
      <p>Пояснение/контекст и так далее.</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 );

Этот новый фильтр появится в следующей версии. Из-за некоторых логистических моментов выпуск немного задержится, поэтому следующая версия выйдет в начале октября.

Огромное спасибо! Буду ждать следующего выпуска. :partying_face: