fix: Correct Linked Assessment metabox rendering and meta key
This commit is contained in:
parent
a626e008bb
commit
ee3b337d5e
1 changed files with 18 additions and 14 deletions
|
|
@ -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 '<label for="quiztech_linked_assessment_field">';
|
||||
\esc_html_e( 'Select the assessment for this job:', 'quiztech' );
|
||||
echo '</label><br />';
|
||||
echo '</label><br />';
|
||||
|
||||
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 '<select name="quiztech_linked_assessment_field" id="quiztech_linked_assessment_field" class="widefat">';
|
||||
echo '<option value="">' . \esc_html__( '-- None --', 'quiztech' ) . '</option>';
|
||||
while ( $assessments_query->have_posts() ) {
|
||||
$assessments_query->the_post();
|
||||
$assessment_id = \get_the_ID();
|
||||
$assessment_title = \get_the_title();
|
||||
echo '<option value="' . \esc_attr( $assessment_id ) . '" ' . \selected( $linked_assessment_id, $assessment_id, false ) . '>' . \esc_html( $assessment_title ) . '</option>';
|
||||
// Use selected() for cleaner attribute generation
|
||||
echo '<option value="' . \esc_attr( $assessment_id ) . '" ' . \selected( $linked_assessment_id, $assessment_id, false ) . '>' . \esc_html( $assessment_title ) . '</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
echo '</select>';
|
||||
\wp_reset_postdata();
|
||||
} else {
|
||||
echo '<p>' . \esc_html__( 'No assessments found. Please create an assessment first.', 'quiztech' ) . '</p>';
|
||||
echo '<p>' . \esc_html__( 'No assessments found. Please create an assessment first.', 'quiztech' ) . '</p>';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue