Using "access callback" and "access arguments" provided with hook_permission how can I check user's access first based on some permission and if user passed this check then execute access callback function with some parameters in path, some thing like this:

$items['order/add/%node'] = array(
  'title' =&gt; 'Place new order',
  'page callback' =&gt; 'drupal_get_form',
  'page arguments' =&gt; array('order_add_form', 2),
  'access callback' =&gt; 'order_add_access',
  'access arguments' =&gt; array('place order', 2),
  'type' =&gt; MENU_LOCAL_TASK,
  'file path' =&gt; drupal_get_path('module', 'order'),
  'file' =&gt; 'order.page.inc',
);
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

}