diff --git a/src/Admin/JobMetaboxes.php b/src/Admin/JobMetaboxes.php
index bf64a9b..41a6ba6 100644
--- a/src/Admin/JobMetaboxes.php
+++ b/src/Admin/JobMetaboxes.php
@@ -175,8 +175,9 @@ class JobMetaboxes {
* @param \WP_Post $post The post object.
*/
public function render_linked_assessment_metabox( $post ) {
+ // Use the correct meta key as defined in meta-fields.md
+ $linked_assessment_id = \get_post_meta( $post->ID, '_quiztech_associated_assessment_id', true );
\wp_nonce_field( 'quiztech_save_linked_assessment_meta', 'quiztech_linked_assessment_nonce' );
- $linked_assessment_id = \get_post_meta( $post->ID, '_quiztech_linked_assessment_id', true );
$assessments_query = new \WP_Query( [
'post_type' => 'assessment',
@@ -186,23 +187,25 @@ class JobMetaboxes {
'order' => 'ASC',
] );
- echo '<label for="quiztech_linked_assessment_field">';
+ // Output raw HTML, not entities
+ echo '
';
if ( $assessments_query->have_posts() ) {
- echo '<select name="quiztech_linked_assessment_field" id="quiztech_linked_assessment_field" class="widefat">';
- echo '<option value="">' . \esc_html__( '-- None --', 'quiztech' ) . '</option>';
+ echo '';
\wp_reset_postdata();
} else {
- echo '<p>' . \esc_html__( 'No assessments found. Please create an assessment first.', 'quiztech' ) . '</p>';
+ echo '
' . \esc_html__( 'No assessments found. Please create an assessment first.', 'quiztech' ) . '
'; } } @@ -218,17 +221,18 @@ class JobMetaboxes { if ( ! \current_user_can( 'edit_post', $post_id ) ) { return; } // No need to check post type here, as the action is specific ('save_post_job') + // Use the correct meta key + $meta_key = '_quiztech_associated_assessment_id'; + // Field check and sanitize if ( isset( $_POST['quiztech_linked_assessment_field'] ) ) { $assessment_id = \sanitize_text_field( \wp_unslash( $_POST['quiztech_linked_assessment_field'] ) ); + // Ensure empty string is saved if '-- None --' is selected, otherwise sanitize as integer $assessment_id = '' === $assessment_id ? '' : \absint( $assessment_id ); - \update_post_meta( $post_id, '_quiztech_linked_assessment_id', $assessment_id ); + \update_post_meta( $post_id, $meta_key, $assessment_id ); } else { - // If the field isn't submitted (e.g., if the metabox wasn't rendered for some reason), - // we might want to delete the meta key to ensure no stale data persists. - // However, typically, if the field exists and is submitted empty, the above logic handles it (sets to ''). - // Let's delete it if it's not set in POST, assuming the metabox should always be present on save. - \delete_post_meta( $post_id, '_quiztech_linked_assessment_id' ); + // If the field isn't submitted, delete the meta key to ensure no stale data persists. + \delete_post_meta( $post_id, $meta_key ); } } } \ No newline at end of file