Reusable metabox backend and frontend

I’ve handled this in a couple different ways.

1) You can manage the list of items in a settings page. You could add a simple comma delimited list of Computers, and pull them to the front end with get_options(‘computers’). If you want to build that into a dropdown you could do something like:

$list = get_options('computers');
$list_a = explode(',', $list);
echo "<select>";
foreach ($list_a as $item) {
    echo "<option value="$item">$item</option>";
}
echo "</select>";

This will allow you to control the list separate from what is actually stored in post meta. That way you can add or remove items from the list of options without worrying about what was previously done.

2) Another option is to create some utility arrays in your code. I do this with things that are fairly static like US states, or Countries. I create a file and include it into my main plugin or functions file and reference it from there. You might have:

function get_computers() {
    return $computers = array(
    'acer' => 'Acer'
    ,'mac' => 'Mac'
    ,'lenovo' => 'Lenovo'
    );
}

You’d loop out these options in a similar way to my first example. You’re just storing data in code instead of the database.

Finally, I think you’re on the right track with using custom taxonomies where possible. A taxonomy called Computers might be easier to manage than either option above especially if you want a non-programmer to be managing it. You’d be able to get access to those with the get_terms() function.

You might also consider adding some custom post statuses. Instead of closing your ticket with a checkbox, you might add a post status called ‘Closed’.

Get more info here: https://codex.wordpress.org/Function_Reference/register_post_status

Anyway, I hope that helps. For what you’re doing, I would also recommend a helper like piklist. It would make the creation of all of the metaboxes, settings pages and fields a lot easier.