ID, itstudio_get_service_url_meta_key(), true); $title_cn = (string) get_post_meta($post->ID, itstudio_get_service_title_cn_meta_key(), true); $title_en = (string) get_post_meta($post->ID, itstudio_get_service_title_en_meta_key(), true); $excerpt_cn = (string) get_post_meta($post->ID, itstudio_get_service_excerpt_cn_meta_key(), true); $excerpt_en = (string) get_post_meta($post->ID, itstudio_get_service_excerpt_en_meta_key(), true); $is_campus_only = itstudio_is_service_campus_only($post->ID); wp_nonce_field('itstudio_save_service_meta', 'itstudio_service_meta_nonce'); ?>

trim($title_cn), itstudio_get_service_title_en_meta_key() => trim($title_en), itstudio_get_service_excerpt_cn_meta_key() => trim($excerpt_cn), itstudio_get_service_excerpt_en_meta_key() => trim($excerpt_en), ); foreach ($meta_updates as $meta_key => $value) { if ($value === '') { delete_post_meta($post_id, $meta_key); } else { update_post_meta($post_id, $meta_key, $value); } } $campus_only_meta_key = itstudio_get_service_campus_only_meta_key(); $is_campus_only = isset($_POST['itstudio_service_campus_only']) && (string) wp_unslash($_POST['itstudio_service_campus_only']) === '1'; if ($is_campus_only) { update_post_meta($post_id, $campus_only_meta_key, '1'); } else { delete_post_meta($post_id, $campus_only_meta_key); } $url_meta_key = itstudio_get_service_url_meta_key(); $raw_url = isset($_POST['itstudio_service_url']) ? trim((string) wp_unslash($_POST['itstudio_service_url'])) : ''; if ($raw_url === '') { delete_post_meta($post_id, $url_meta_key); return; } if (strpos($raw_url, '/') === 0) { $raw_url = home_url($raw_url); } $service_url = esc_url_raw($raw_url); if ($service_url === '') { delete_post_meta($post_id, $url_meta_key); return; } update_post_meta($post_id, $url_meta_key, $service_url); } add_action('save_post_service', 'itstudio_save_service_meta'); function itstudio_service_category_add_fields($taxonomy) { wp_nonce_field('itstudio_save_service_category_meta', 'itstudio_service_category_meta_nonce'); ?>
term_id; $name_cn = (string) get_term_meta($term_id, itstudio_get_service_category_name_cn_meta_key(), true); $name_en = (string) get_term_meta($term_id, itstudio_get_service_category_name_en_meta_key(), true); wp_nonce_field('itstudio_save_service_category_meta', 'itstudio_service_category_meta_nonce'); ?> trim($name_cn), itstudio_get_service_category_name_en_meta_key() => trim($name_en), ); foreach ($term_meta as $meta_key => $value) { if ($value === '') { delete_term_meta($term_id, $meta_key); } else { update_term_meta($term_id, $meta_key, $value); } } } add_action('created_service_category', 'itstudio_save_service_category_meta'); add_action('edited_service_category', 'itstudio_save_service_category_meta'); function itstudio_service_admin_columns($columns) { $columns['service_category'] = __('分类', 'itstudio'); $columns['service_url'] = __('跳转链接', 'itstudio'); return $columns; } add_filter('manage_service_posts_columns', 'itstudio_service_admin_columns'); function itstudio_service_admin_custom_column($column, $post_id) { if ($column === 'service_category') { $terms = get_the_terms($post_id, 'service_category'); if (empty($terms) || is_wp_error($terms)) { echo '' . esc_html__('未分类', 'itstudio') . ''; return; } $labels = array(); foreach ($terms as $term) { $i18n = itstudio_get_service_category_i18n_labels($term); $label = $i18n['cn']; if ($i18n['en'] !== $i18n['cn']) { $label .= ' / ' . $i18n['en']; } $labels[] = $label; } echo esc_html(implode(' | ', $labels)); return; } if ($column === 'service_url') { $url = itstudio_get_service_target_url($post_id); if ($url === '') { echo '-'; return; } echo '' . esc_html($url) . ''; } } add_action('manage_service_posts_custom_column', 'itstudio_service_admin_custom_column', 10, 2);