简体   繁体   中英

Multiple IDs in PHP call in WordPress

** I apologize for being unclear - I meant I want "Summit Sponsors" to display once regardless of how many IDs are used. Just for it to be hidden if no IDs are used. Thanks **

I was wondering if anyone knew a clean way to use multiple custom fields in an IF statement.

At the moment I have it spaced out, so each custom field "SponsorHeading#" has it's own if/else statement:

<?php
if(get_post_meta($post_id, 'SponsorHeading1', true)) {
   echo '<h2>Summit Sponsors </h2>';
}
else {
   echo '';
}
if(get_post_meta($post_id, 'SponsorHeading2', true)) {
    echo '<h2>Summit Sponsors </h2>';
}
else {
    echo '';
} 
?>

and so on for 3 more custom fields. I'd like to have something cleaner like:

<?php
if(get_post_meta($post_id, 'SponsorHeading1', true)) || if(get_post_meta($post_id, 'SponsorHeading2', true)) || if(get_post_meta($post_id, 'SponsorHeading3', true)) {
  echo '<h2>Summit Sponsors </h2>';
}
 else {
        echo '';
}
?>

or something along those lines to clean it up but nothing I've tried has worked.

Any suggestions?

Not 100% sure on if there is a more efficient way to manage this within WordPress's logic itself, but the simplest solution I can conceive of using the example you give is to put all of the ids into an array & have logic to loop through them like so:

<?php

$fields = array('SponsorHeading1', 'SponsorHeading2', 'SponsorHeading3');

foreach($fields as $field_value) {
  if(get_post_meta($post_id, $field_value, true)) {
    echo '<h2>Summit Sponsors </h2>';
  }
  else {
    echo '';
  }
}

?>

EDIT: Addressing the user edits to the question. So how about this? We loop through the fields, and the value of $has_value changes to TRUE if at least one of the fields is returned by get_post_meta() . And if $has_value is TRUE then act on it:

<?php

$fields = array('SponsorHeading1', 'SponsorHeading2', 'SponsorHeading3');
$has_value = FALSE;
foreach($fields as $field_value) {
  if(get_post_meta($post_id, $field_value, true)) {
    $has_value = TRUE;
  }
}

if ($has_value) {
  echo '<h2>Summit Sponsors </h2>';
}
else {
  echo '';
}

?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM