Pues me cuesta enter el codigo,

Por qué usa
Código PHP:
$padre===NULL
cuando puede utilizar
Código PHP:
is_null o !is_null
y tampoco se sabe que es la variable $padre, es int, string...
y tampoco se sabe que debe retornar la function.

es cuestion de diagramar mejor lo que desea hacer, a veces cuesta un poco pensar pero a la larga le ahorrará mucho dolores de cabeza.
observe que repite este codigo:
Código PHP:
Ver originalconsulta
= ($padre===NULL)?
mysqli_query($conexion, "select * from categoria where categoria_padre is NULL order by orden"): mysqli_query($conexion, "select * from categoria where categoria_padre=".$padre." order by orden");
Una forma correcta es escribir una funcion que retorne la cosulta una sola vez y no repetir en cada archivo lo mismo.
en fin.