0

I'm trying to use ACF to output different salary amounts for a job listing board.

E.g:

Select box option in ACF for salary type ("competitive", per day, per annum etc). Looks like this:

enter image description here

Then I have conditional fields. So if "P.A" is selected it shows the P.A field:

enter image description here

I have a bunch of these conditional fields for the different select box options.

My question is:

How do I add these to an if statement so that the correct field is shown based on the content that was supplied?

E.g

if job_salary was selected as "competitive" =
   echo "competitive"
 else if job_salary was selected as "p.a" =
   echo job_salary_singular
 else if job_salary was selected as "p.a range" =
   echo job_range_start " to " job_range_end

Hopefully this makes sense. This is the code I have at the moment, which just outputs the type of salary entered (e.g, competitive, P.A, Per Day Range) as text.

1
  • Just to clarify... You have five (what I'll call) "top level" options to choose from in the job_salary_singular field. Each of those options may or may not hide or show some additional conditional fields. And ultimately, you're needing to know how to output the proper conditional fields with their corresponding "top level" field value in the post (front end of the theme)? Commented Jul 27, 2014 at 16:00

1 Answer 1

1

This approach should work. In my example, the main selector field where you choose if it's per annum pay, competitive, a range, etc., is called salary_type.

Then I've got per_annum. It appearing is conditional on 'Per Annum' being selected from salary_type. And finally per_annum_range_low and per_annum_range_high, both of which are conditional on 'Per Annum Range' being selected.

We can then test based on the salary_type selection to output the appropriate values and HTML. Alternatively, you could test for the existence of those fields. But I think this is a bit cleaner and allows you to skip adding an additional field for "Competitive".

PHP

    <?php

    if (get_field('salary_type')) { //first we check if the salary_type field exists.

        $selection = get_field('salary_type'); //then we store its value as '$selection'

        if ($selection === 'comp') { //we check which selection was made by looking at its label.
            echo '<p>' . 'Competitive' . '</p>';

        } else if ($selection === 'perannum') { //ACF allows you to store a selection as both a value (in this case, 'perannum') and a label ('Per Annum', which is what the user sees.)
            echo '<p>' . get_field('per_annum') . ' per year</p>';

        } else if ($selection === 'perannumrange') {
            echo '<p>From ' . get_field('per_annum_range_low') . ' to ' . get_field('per_annum_range_high') . ' per year</p>'; //and then echo its output and any HTML markup you want.

        } else {
            echo '<p>No Salary Info Given.</p>'; //if they don't make a selection
        }
    }

    ?>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.