Core Widget „Recent comments“ anpassen / auch für private Posts anzeigen
-
Hallo zusammen
zunächst etwas Hintergrund, dann die Frage
Die verlinkte Seite ist meine „Testseite“, auf der ich rumprobiere (nur zur Info). Ich habe einen Bereich mit privaten Posts eingerichtet und über das Members-Plugin eine neue Rolle dazugepackt, so dass meine Abonnentinnen nach Anmeldung in WordPress alles sehen können. Im Hauptblog ist das zusätzlich noch mit einer Paywall geschützt, aber das ist hier uninteressant.
Mein Problem: meine Leserinnen kommentieren oft und viel und orientieren sich auch sehr an vorhandenen Kommentaren. Im Seitenbereich verwende ich das Standardwidget „Recent comments“ – dort werden aber die Kommentare aus privaten Posts nicht angezeigt – was in diesem Fall aber genau erwünscht ist. Man sieht ja nur den Namen und den Titel des Posts, was in Ordnung ist.
Nun habe ich mich zwei Stunden lang durchgewühlt, kein passendes Plugin oder sonst etwas fertiges gefunden. Aber ich habe eine Idee gefunden:
1) Funktion aus class-wp-widget-recent-comments.php nehmen
2) in mein Childtheme packen in functions.phpund schon klappt es.
Problem:
Ich denke, es ist die Funktion weiter unten.
Frage 1: wie packe ich die richtig in mein Child theme? derselbe Name???? anders??
Frage 2: ich habe in der Mitte ‚post_status‘ => ‚publish‘ gefunden – wie erweitere ich das syntaktisch richtig um „private“?Ich bin eher so ein ambitionierter Laie mit IT-Verständnis und kein Developer. Es wäre super, wenn mir da jemand helfen könnte.
LG Irit
public function widget( $args, $instance ) { static $first_instance = true; if ( ! isset( $args['widget_id'] ) ) { $args['widget_id'] = $this->id; } $output = ''; $default_title = __( 'Recent Comments' ); $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : $default_title; /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5; if ( ! $number ) { $number = 5; } $comments = get_comments( /** * Filters the arguments for the Recent Comments widget. * * @since 3.4.0 * @since 4.9.0 Added the <code>$instance</code> parameter. * * @see WP_Comment_Query::query() for information on accepted arguments. * * @param array $comment_args An array of arguments used to retrieve the recent comments. * @param array $instance Array of settings for the current widget. */ apply_filters( 'widget_comments_args', array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish', ), $instance ) ); $output .= $args['before_widget']; if ( $title ) { $output .= $args['before_title'] . $title . $args['after_title']; } $recent_comments_id = ( $first_instance ) ? 'recentcomments' : "recentcomments-{$this->number}"; $first_instance = false; $format = current_theme_supports( 'html5', 'navigation-widgets' ) ? 'html5' : 'xhtml'; /** This filter is documented in wp-includes/widgets/class-wp-nav-menu-widget.php */ $format = apply_filters( 'navigation_widgets_format', $format ); if ( 'html5' === $format ) { // The title may be filtered: Strip out HTML and make sure the aria-label is never empty. $title = trim( strip_tags( $title ) ); $aria_label = $title ? $title : $default_title; $output .= '<nav role="navigation" aria-label="' . esc_attr( $aria_label ) . '">'; } $output .= '<ul id="' . esc_attr( $recent_comments_id ) . '">'; if ( is_array( $comments ) && $comments ) { // Prime cache for associated posts. (Prime post term cache if we need it for permalinks.) $post_ids = array_unique( wp_list_pluck( $comments, 'comment_post_ID' ) ); _prime_post_caches( $post_ids, strpos( get_option( 'permalink_structure' ), '%category%' ), false ); foreach ( (array) $comments as $comment ) { $output .= '<li class="recentcomments">'; $output .= sprintf( /* translators: Comments widget. 1: Comment author, 2: Post link. */ _x( '%1$s on %2$s', 'widgets' ), '<span class="comment-author-link">' . get_comment_author_link( $comment ) . '</span>', '<a href="' . esc_url( get_comment_link( $comment ) ) . '">' . get_the_title( $comment->comment_post_ID ) . '</a>' ); $output .= '</li>'; } } $output .= '</ul>'; if ( 'html5' === $format ) { $output .= '</nav>'; } $output .= $args['after_widget']; echo $output; }
Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]
- Das Thema „Core Widget „Recent comments“ anpassen / auch für private Posts anzeigen“ ist für neue Antworten geschlossen.