YogaWCA
I am an Ex Celebrity Cruises Waiter. Virgin Voyages Server. Web Engineer. Love Writing.
216
Articles
/** * WCA Member Profiles — custom fields + crawlable /member/ pages. */ // ── 1. Field definitions ──────────────────────────────────────────────── function wca_profile_fields_defs() { return array( 'wca_position' => 'Posisi / Jabatan', 'wca_batch' => 'Angkatan', 'wca_instagram' => 'Instagram (username tanpa @)', 'wca_tiktok' => 'TikTok (username tanpa @)', 'wca_linkedin' => 'LinkedIn (URL lengkap)', ); } // ── 2. Show + save fields on the WP user profile screen ───────────────── add_action('show_user_profile', 'wca_render_profile_fields'); add_action('edit_user_profile', 'wca_render_profile_fields'); function wca_render_profile_fields($user) { echo '
'; foreach (wca_profile_fields_defs() as $key => $label) { $val = esc_attr(get_user_meta($user->ID, $key, true)); echo ''; echo ''; } $hide = get_user_meta($user->ID, 'wca_hide_profile', true); echo ''; echo '
| Privasi |
|---|
'; } add_action('personal_options_update', 'wca_save_profile_fields'); add_action('edit_user_profile_update', 'wca_save_profile_fields'); function wca_save_profile_fields($user_id) { if (!current_user_can('edit_user', $user_id)) return; foreach (array_keys(wca_profile_fields_defs()) as $key) { if (isset($_POST[$key])) { update_user_meta($user_id, $key, sanitize_text_field(wp_unslash($_POST[$key]))); } } update_user_meta($user_id, 'wca_hide_profile', isset($_POST['wca_hide_profile']) ? '1' : ''); } // ── 3. Rewrite rule: /member/ ───────────────────────────────── add_action('init', function () { add_rewrite_rule('^member/([^/]+)/?$', 'index.php?wca_member=$matches[1]', 'top'); if (get_option('wca_member_rw_ver') !== '1') { flush_rewrite_rules(false); update_option('wca_member_rw_ver', '1'); } }); add_filter('query_vars', function ($vars) { $vars[] = 'wca_member'; return $vars; }); // ── 4. Nice