Hello,
i am writing a beauty blog and i would like to show the user's skin, and hairtypes, etc. below their Name in wpDiscuz Comments.
I set up PODS and added the custom fields to the profile edit section:
I want to show the selected entries from PODS below the author's name in Comments in wpDiscuz. I've set up the PODS Plugin and added a POD to user profile > advance with the following options that i want to show below the author's name: Type Select, Single - alter - hauttyp_gesicht - hauttyp_koerper - haartyp - haarstruktur - haardicke - augenfarbe Type Select, Multiple, Checkbox - hautprobleme
I have added the following code snippet to my functions.php:
// Display PODS custom fields in wpDiscuz comments below the author's name add_filter('wpdiscuz_comment_author_text', 'pods_profile_fields_display', 10, 2); function pods_profile_fields_display($author_text, $comment) { // Get the user ID of the comment author $user_id = $comment->user_id; // Return the original author text if the user is not logged in if (!$user_id) { return $author_text; } // Retrieve PODS data for the user $user_pod = pods('user', $user_id); // Return the original author text if no PODS data is found if (!$user_pod) { return $author_text; } // Define an array of single-select fields with their labels $single_fields = [ 'alter' => 'Alter', 'hauttyp_gesicht' => 'Hauttyp Gesicht', 'hauttyp_koerper' => 'Hauttyp Körper', 'haartyp' => 'Haartyp', 'haarstruktur' => 'Haarstruktur', 'haardicke' => 'Haardicke', 'augenfarbe' => 'Augenfarbe' ]; // Initialize a variable to store additional information $additional_info = ''; // Loop through each single-select field and append its value if it exists foreach ($single_fields as $field_name => $field_label) { $field_value = $user_pod->field($field_name); if (!empty($field_value)) { $additional_info .= sprintf( '<div class="user-%s">%s: %s</div>', esc_attr($field_name), esc_html($field_label), esc_html($field_value) ); } } // Handle the multiple-select field "hautprobleme" $hautprobleme = $user_pod->field('hautprobleme'); if (!empty($hautprobleme)) { // Convert array to comma-separated string if necessary $hautprobleme_value = is_array($hautprobleme) ? implode(', ', $hautprobleme) : $hautprobleme; $additional_info .= '<div class="user-hautprobleme">Hautprobleme: ' . esc_html($hautprobleme_value) . '</div>'; } // Append additional information to the author text if any exists if ($additional_info) { $author_text .= '<div class="user-profile-info">' . $additional_info . '</div>'; } return $author_text; }
I also added the following CSS:
/* Style for user profile information displayed in comments */ .user-profile-info { font-size: 12px; color: #666; margin-top: 4px; display: flex; flex-wrap: wrap; gap: 8px; } .user-profile-info > div { margin-right: 10px; background-color: #f5f5f5; padding: 4px 8px; border-radius: 4px; } @media (max-width: 480px) { .user-profile-info { flex-direction: column; gap: 4px; } .user-profile-info > div { margin-right: 0; } }
Is there anything i'm doing wrong or is there a better version to do it?
Hi,
wpDiscuz doesn't have a wpdiscuz_comment_author_text
hook.
Please check the full list of available wpDiscuz hooks here and choose the one that best fits your needs: