public function __call($name, $arguments = array()) { global $wf; if (preg_match("/incoming\_([a-z0-9\_]+)/", $name, $matches)) { // look for "incoming" post types, with arguments, so that we can call incoming_cars("orderby=title") for example $pt_name = $matches[1]; $singular = WOOF_Inflector::singularize($pt_name); foreach ($wf->types() as $type) { if ($type->name == $pt_name) { return $this->incoming("post_type=".$pt_name)->first(); // return the first incoming post (ignore the args) } else if ($type->name == $singular) { $args = array("post_type" => $singular); if (isset($arguments[0])) { $args = wp_parse_args( $arguments[0] ); $args["post_type"] = $singular; } return $this->incoming($args); } } // next we'll try taxonomy names foreach ($wf->taxonomies() as $tax) { if ($tax->name == $singular) { if (isset($arguments[0])) { $args = wp_parse_args( $arguments[0] ); } return $this->incoming_terms($tax, $args); } } } else { $singular = WOOF_Inflector::singularize($name); foreach ($wf->types() as $type) { if ($type->name == $name) { return $this->posts("post_type=".$singular)->first(); // return the first post (ignore the args) } else if ($type->name == $singular) { $args = array("post_type" => $singular); if (isset($arguments[0])) { $args = wp_parse_args( $arguments[0] ); $args["post_type"] = $singular; } return $this->posts($args); } } } return parent::__call($name, $arguments); }