Using "access callback" and "access arguments" provided with hook_permission
Not sure exactly what you mean there but your code already has a custom access callback specified as well as access arguments?

You could have an access callback like this:

/**
 * Add order access callback
 */
function order_add_access($op, $node){

 switch ($op) {
   case 'place order':
   // Return true, if logged in user has administer nodes permission
   // and node status is published.
   if (user_access('administer nodes') &amp;&amp; $node-&gt;status == 1) {
     return TRUE;
   }
   break;
 }
 return FALSE; // default

}