How can I bind viewport display display as wireframe (wire) to a hotkey? I'm trying to hotkey Blender's function of a mesh object in the viewport to be displayed as a wireframe (the one that can be found in the Object --&gt; Viewport Display tab --&gt; Display as wire). I need it so that I don't have to quit the fullscreen mode while I'm modelling.
Now, I am aware that there are free and paid add-ons available that automatically do that when you use an object for a boolean operation (like Jaynam's Fast carve or Hardops), but I try to keep my workflow add-on free as much as possible, as those add-ons have their own problems and disadvantages (slow updates causing problems with latest builds of 2.8, for example, Jaynam's fast carve creates hidden geometry rubbish in latest versions and etc, and this is why I don't want to rely on those workflows, especially when I can bind everything on hotkeys and do it quite fast straight out of the box and have zero problems migrating to future builds).
I've tried creating a hotkey bind in input preferences on a command Object.display_type, but nothing happens (It's obvious that I'm not using it correctly). I'm not acquainted with Blender python API, neither am I a good python coder. Can someone, pretty please, direct me in the correct destination?
You would have to code it as an add-on. First make an operator than make it into an addon for it to be available every time you start Blender. Something like this:

bl_info = {
    "name": "Toggle Wireframe",
    "author": "Martynas Žiemys",
    "version": (1, 0),
    "blender": (2, 80, 0),
    "location": "View3D - ctrl + alt + shift + z",
    "description": "Toggles display mode of selected objects between Wire and Textured",
    "warning": "",
    "wiki_url": "",
    "category": "View 3D",
}

import bpy

class OBJECT_OT_wire_toggle(bpy.types.Operator):
    """Toggles display mode of selected objects between Wire and Textured"""
    bl_idname = "object.wire_toggle"
    bl_label = "Display as Wire Toggle"

    @classmethod
    def poll(cls, context):
        return context.object is not None

    def execute(self, context):
        if context.object.display_type == 'WIRE':
            display_type = 'TEXTURED'
        else:
            display_type = 'WIRE'       
        for obj in context.selected_objects: 
            obj.display_type = display_type
        return {'FINISHED'}


addon_keymaps = []
def registerKeymaps():
    wm = bpy.context.window_manager
    if wm.keyconfigs.addon:
        km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
        kmi = km.keymap_items.new('object.wire_toggle', 'Z', 'PRESS', shift=True, alt=True,ctrl=True)
        addon_keymaps.append((km, kmi))


def unregisterKeymaps():
    for km, kmi in addon_keymaps:
        km.keymap_items.remove(kmi)
    addon_keymaps.clear()


classes = (
    OBJECT_OT_wire_toggle,
)

def register():
    from bpy.utils import register_class
    for cls in classes:
        register_class(cls)
    registerKeymaps()

def unregister():
    unregisterKeymaps()
    from bpy.utils import unregister_class
    for cls in reversed(classes):
        unregister_class(cls)

if __name__ == "__main__":
    register()


You can change it to your liking, save it as .py and install it as an add-on.

There is no reason to try to keep your workflow 'add-on free'. A big part of using Blender is using its many addons. The software cannot and should not come with all possible functionality - it would be massive and inefficient. Add-ons help you have the functionality you need.