You can try the below structure. If both values are empty no div will be returned and in the else statement you can handle each meta for indefinite/empty meta.
$importo_cauzione_author = esc_html__(get_the_author_meta( 'importo_cauzione', $post->post_author ), 'sacconicase');
$importo_cauzione_meta = get_post_meta( $post->ID, "function_cauzione", true );
// Check if both are empty, then return nothing
if ( empty( $importo_cauzione_author ) && empty( $importo_cauzione_meta ) ) {
$importo_cauzione = ''; // No <div> returned
} else {
// Construct the output only if at least one value is not empty
$importo_cauzione = '<div class="imp_cauzione">';
if ( ! empty( $importo_cauzione_author ) ) {
$importo_cauzione .= $importo_cauzione_author;
} else {
$importo_cauzione .= 'Indefinite author'; // Placeholder
}
if ( ! empty( $importo_cauzione_meta ) ) {
$importo_cauzione .= ' ' . $importo_cauzione_meta . ' euro'; // Add post meta
} else {
$importo_cauzione .= ' Indefinite amount'; // Placeholder
}
$importo_cauzione .= '</div>';
}
it seems it works… I just replaced ‘Indefinite author’ by ” and ‘Indefinite amount’ by ”
I didnt konw this construction, it seems the output inside the <div> is $importo_cauzione_author + $importo_cauzione_meta + euro, I dont undestand which syntax element unite $importo_cauzione_author and $importo_cauzione_meta exacly in this order
The syntax element that combines $importo_cauzione_author and $importo_cauzione_meta in this order is basic string concatenation in PHP using the .= operator
$importo_cauzione = '<div class="imp_cauzione">'; (Initialization)
– <div class=”imp_cauzione”>
$importo_cauzione .= $importo_cauzione_author; (First Concatenation)
– <div class=”imp_cauzione”>$importo_cauzione_author
$importo_cauzione .= ' ' . $importo_cauzione_meta . ' euro'; (2nd Concatenation)
– <div class=”imp_cauzione”>$importo_cauzione_author $importo_cauzione_meta euro
$importo_cauzione .= '</div>'; (close div)