Custom Widget not Available after Plugin Installation

There’s a lot of reasons this isn’t working. The best place to to start is the Widgets API page in the Codex. It outlines a basic class for creating a widget. At a minimum, you need a class with a __construct(), widget(), form(), and update() function.

You also need to register your widget correctly. The register_widget() function takes the class of the widget as its parameter, whereas at the moment you’re sending through a function name.

Your widget registration is also never being called, because your hook is only added inside the function it calls: which means it can never be added, because it’s never called.

Move the widget registration outside of your class, and set it up like this:

function register_qfpform(){
    register_widget('qfpregister');
}

add_action('widgets_init', 'register_qfpform');

You can find out more about hooks (filters and actions) work in general on the Codex’ Plugin API page.

After this, you’ll need to look at your registration_form() function and probably move most of the code into the widget() function. The widget() function outputs the frontend code of the widget, whereas the form() function outputs the backend code. Your current registration_form() function is also quite broken – there’s a return; down towards the end, before the update code, which means the update code is never going to run.

It’s also a bit unclear what you’re trying to do: the function returns the contents of the variable $html, but there’s also a number of echo statements before that which would directly echo the person’s first and last name, outside of the rest of the flow of the form.

I’ll point you back to the Widgets API page in the Codex. Start with the example there as a base, and build upon that. What you have right now is a hotch potch of code that isn’t going to work.