{"id":3210,"date":"2015-11-19T08:30:10","date_gmt":"2015-11-19T13:00:10","guid":{"rendered":"https:\/\/skatox.com\/blog\/?p=3210"},"modified":"2023-02-28T12:08:35","modified_gmt":"2023-02-28T17:08:35","slug":"como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce","status":"publish","type":"post","link":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/","title":{"rendered":"Agregar rutas personalizadas en el API REST de WooCommerce"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.woothemes.com\/woocommerce\/\">WooCommerce<\/a> es una excelente plataforma para montar tu propia tienda en l\u00ednea. Aunque mucha gente piensa que WordPress sigue siendo solo una plataforma para blogs, desde hace a\u00f1os se ha cambiado el funcionamiento interno para soportar todo tipo de contenido. WooCommerce es un ejemplo de ellos, pues este plugin permite soportar todo el contenido requerido en una tienda en l\u00ednea como: productos, \u00f3rdenes, pagos, descuentos, entre otros. Adem\u00e1s de incluir una API REST para realizar acciones adicionales sobre \u00e9l.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">API REST<\/h2>\n\n\n\n<p>El plugin incluye una <a href=\"https:\/\/woocommerce.github.io\/woocommerce-rest-api-docs\/\" target=\"_blank\" rel=\"noopener\">API REST <\/a>para las operaciones mas b\u00e1sicas (se debe activar previamente), permitiendo comunicaci\u00f3n hacia o desde aplicaciones externas, extendiendo a\u00fan mas las posibilidades de procesos que se pueden implementar en la tienda. Sin embargo, si manejas flujos de compras personalizados o deseas realizar acciones mas all\u00e1 de las disponibles en el API por defecto, puedes agregar las tuyas tal como se explicar\u00e1 a continuaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Desarrollo del plugin<\/h2>\n\n\n\n<p>El plugin se divide en 2 archivos, el principal para definir el plugin como tal y permitirle indicar a WordPress en que momento se va a cargar el segundo archivo, que contiene los m\u00e9todos que responden a las rutas personalizadas del API.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cargador de la clases<\/h3>\n\n\n\n<p>Para modificar WordPress, siempre es recomendable hacerlo a trav\u00e9s de plugins, por eso el primer paso es definir un plugin como cualquier otro y dentro del constructor de la clase del plugin, indicar a WooCommerce que luego de cargar el c\u00f3digo necesario para implementar el API (a trav\u00e9s del hook woocommerce_api_loaded) se deben agregar la(s) clase(s) que implementan las rutas personalizadas (a trav\u00e9s del hook woocommerce_api_classes), este c\u00f3digo lo pueden ver a continuaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">\/**\n * Custom API REST path  class\n *\n * @package MyPlugin\n * @author Skatox\n *\/\nclass WC_API_Custom extends WC_API_Resource\n{\n\n    const PATH = '\/custom';\n\n    \/**\n     * Function to define each of the custom path\n     *\/\n    public function register_routes($routes)\n    {\n        \/\/GET Request\n        $routes[self::PATH . '\/orders'] = array(\n            array(array($this, 'listShippingOrders'), WC_API_Server::READABLE),\n        );\n\n        \/\/POST Request\n        $routes[self::PATH . '\/orders\/(?P&amp;lt;order_id>\\d+)\/fulfillments.json'] = array(\n            array(array($this, 'createItem'), WC_API_Server::CREATABLE | WC_API_Server::ACCEPT_DATA),\n        );\n\n        \/\/PUT Request\n        $routes[self::PATH . '\/variants\/(?P&amp;lt;id>\\d+).json'] = array(\n            array(array($this, 'updateItem'), WC_API_Server::EDITABLE | WC_API_Server::ACCEPT_DATA),\n        );\n\n        return $routes;\n    }\n\n    public function listShippingOrders($fields = null, $filter = array(), $status = null, $page = 1)\n    {\n        $wcApiOrders = new WC_API_Orders($this->server);\n        $orders = $wcApiOrders->get_orders($fields, $filter, $status, $page);\n\n        \/\/Removes orders without shipping methods\n        foreach ($orders['orders'] as $key => $order)\n        {\n            if (empty($order['shipping_methods'])) {\n                unset($orders['orders'][$key]);\n                continue;\n            }\n        }\n\n        return $order;\n    }\n\n    public function createItem($order_id, $data)\n    {\n        \/\/Do insert proccess and then return the response array\n    }\n\n    public function updateItem($id, $data)\n    {\n        \/\/Do update proccess and then return the response array\n\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Leyendo observar\u00e1n que es un plugin de WordPress donde la clase WD_API_LOADER registra los hooks mencionados anteriormente, para inyectar en el momento que Woocommerce carga sus clases del API, las clases que instancia los procesos personalizados a ser implementados en el API.<\/p>\n\n\n\n<p>Al final es recomendable instanciar la clase en un objeto, de este modo es posible acceder a los m\u00e9todos de forma global desde plugines externos, como por ejemplo para detener la carga de las clases o implementar modificaciones permitiendo dar mayor flexibilidad al plugin.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Clase con los m\u00e9todos de la API REST<\/h3>\n\n\n\n<p>El siguiente paso corresponde a crear la clase que responde a las peticiones HTTP del API. En este ejemplo, se define una constante con el PATH personalizado y en el constructor se definen las rutas personalizadas y el m\u00e9todo que se debe llamar que responder\u00e1 a la petici\u00f3n realizada. Si observas, el par\u00e1metro recibido es un <em>array<\/em> donde la llave representa la ruta relativa del API y como valor, otro arreglo con el nombre de la funci\u00f3n a procesar la petici\u00f3n y las banderas del tipo de petici\u00f3n. Estas \u00faltimas banderas permiten definir el tipo de petici\u00f3n a recibir, por ejemplo<br \/><strong> WC_API_Server::READABLE<\/strong> indica que lee datos desde la petici\u00f3n tal como es una petici\u00f3n <em>GET<\/em>,<br \/><strong> WC_API_Server::ACCEPT_DATA<\/strong> permite decir que lea el cuerpo de la petici\u00f3n y permite leer informaci\u00f3n para peticiones <em>POST<\/em> y <em>PUT<\/em>, entre otros.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">\/**\n * Custom API REST path  class\n *\n * @package MyPlugin\n * @author Skatox\n *\/\nclass WC_API_Custom extends WC_API_Resource\n{\n\n    const PATH = '\/custom';\n\n    \/**\n     * Function to define each of the custom path\n     *\/\n    public function register_routes($routes)\n    {\n        \/\/GET Request\n        $routes[self::PATH . '\/orders'] = array(\n            array(array($this, 'listShippingOrders'), WC_API_Server::READABLE),\n        );\n\n        \/\/POST Request\n        $routes[self::PATH . '\/orders\/(?P&amp;lt;order_id>\\d+)\/fulfillments.json'] = array(\n            array(array($this, 'createItem'), WC_API_Server::CREATABLE | WC_API_Server::ACCEPT_DATA),\n        );\n\n        \/\/PUT Request\n        $routes[self::PATH . '\/variants\/(?P&amp;lt;id>\\d+).json'] = array(\n            array(array($this, 'updateItem'), WC_API_Server::EDITABLE | WC_API_Server::ACCEPT_DATA),\n        );\n\n        return $routes;\n    }\n\n    public function listShippingOrders($fields = null, $filter = array(), $status = null, $page = 1)\n    {\n        $wcApiOrders = new WC_API_Orders($this->server);\n        $orders = $wcApiOrders->get_orders($fields, $filter, $status, $page);\n\n        \/\/Removes orders without shipping methods\n        foreach ($orders['orders'] as $key => $oreder)\n        {\n            if (empty($oreder['shipping_methods'])) {\n                unset($oreders['orders'][$key]);\n                continue;\n            }\n        }\n\n        return $order;\n    }\n\n    public function createItem($order_id, $data)\n    {\n        \/\/Do insert proccess and then return the response array\n    }\n\n    public function updateItem($id, $data)\n    {\n        \/\/Do update proccess and then return the response array\n\n    }\n}<\/code><\/pre>\n\n\n\n<p>Una vez que proceses la petici\u00f3n, si necesitas devolver un objeto JSON, simplemente debes retornar un <em>array<\/em> con la informaci\u00f3n deseada y autom\u00e1ticamente Woocommerce se encargar\u00e1 de transformarlo en un objeto JSON e imprimirlo en la salida.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recomendaciones<\/h2>\n\n\n\n<p>Como podr\u00e1s observar, no es dif\u00edcil. En caso que no sepas como desarrollar debido a la poca documentaci\u00f3n. Te recomiendo leer el c\u00f3digo fuente de las clases del API de Woocommerce, son f\u00e1ciles de entender, creadas por el mismo equipo del plugin y ver\u00e1s como est\u00e1n creados los m\u00e9todos existentes. Una de las mejores clases para guiarte, es la de productos que se encuentra ubicada en la ruta <strong>wp-plugins\/woocommerce\/includes\/api\/class-wc-api-products.php<\/strong>, pues es muy completa y posee todas las operaciones REST soportadas.<\/p>\n\n\n\n<p>Recuerda crear un plugin para esto, <strong>evita colocarlo en el functions.php<\/strong> pues ser\u00e1 dif\u00edcil de mantener y dificulta migrar de tema (porque el API depender\u00e1 de \u00e9sta). Finalmente, recuerda respetar el est\u00e1ndar REST, he visto gente que implementa todo en POST y agrega incompatibilidades a aplicaciones.<\/p>\n\n\n\n<p>Ya depende de tu imaginaci\u00f3n, descubrir como extender las funcionalidades de WooCommerce a trav\u00e9s de un API REST personalizado.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WooCommerce es una excelente plataforma para montar tu propia tienda en l\u00ednea. Aunque mucha gente piensa que WordPress sigue siendo solo una plataforma para blogs,&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/\">Seguir leyendo<span class=\"screen-reader-text\">Agregar rutas personalizadas en el API REST de WooCommerce<\/span><\/a><\/div>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"C\u00f3mo agregar tus propias rutas en el API REST de #Woocommerce #Wordpress","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[549,716,582,1017],"tags":[959,958,960,479],"class_list":["post-3210","post","type-post","status-publish","format-standard","hentry","category-desarrollo-web","category-todo-lo-relacionado-al-desarrollo-de-software","category-planetas-linux","category-wordpress","tag-api","tag-ecommerce","tag-rest","tag-wordpress","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Agregar rutas personalizadas en el API REST de WooCommerce<\/title>\n<meta name=\"description\" content=\"Aprender a crear rutas personalizadas en el API REST de WooCommerce y crear tus propios endpoints a tus sitios web\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agregar rutas personalizadas en el API REST de WooCommerce\" \/>\n<meta property=\"og:url\" content=\"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/\" \/>\n<meta property=\"og:site_name\" content=\"El blog de Skatox\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ElWeblogdeSkatox\/\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-19T13:00:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-28T17:08:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/skatox.com\/blog\/images\/2015\/12\/skatux.png\" \/>\n\t<meta property=\"og:image:width\" content=\"625\" \/>\n\t<meta property=\"og:image:height\" content=\"603\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Miguel Useche\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@skatox\" \/>\n<meta name=\"twitter:site\" content=\"@skatox\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Miguel Useche\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/\"},\"author\":{\"name\":\"Miguel Useche\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/person\\\/e081bf33c5b0f1b0514e253cb578e1ba\"},\"headline\":\"Agregar rutas personalizadas en el API REST de WooCommerce\",\"datePublished\":\"2015-11-19T13:00:10+00:00\",\"dateModified\":\"2023-02-28T17:08:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/\"},\"wordCount\":757,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\"},\"keywords\":[\"api\",\"ecommerce\",\"rest\",\"wordpress\"],\"articleSection\":[\"Desarrollo web\",\"Desarrollo y Programaci\u00f3n\",\"Planetas\",\"Wordpress\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/\",\"name\":\"Agregar rutas personalizadas en el API REST de WooCommerce\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#website\"},\"datePublished\":\"2015-11-19T13:00:10+00:00\",\"dateModified\":\"2023-02-28T17:08:35+00:00\",\"description\":\"Aprender a crear rutas personalizadas en el API REST de WooCommerce y crear tus propios endpoints a tus sitios web\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2015\\\/11\\\/19\\\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agregar rutas personalizadas en el API REST de WooCommerce\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\",\"name\":\"El blog de Skatox\",\"description\":\"Compartiendo mis opiniones inform\u00e1ticas mas all\u00e1 de los 280 caracteres\",\"publisher\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/skatox.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\",\"name\":\"El blog de Skatox\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2022\\\/03\\\/tux.png\",\"contentUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2022\\\/03\\\/tux.png\",\"width\":218,\"height\":218,\"caption\":\"El blog de Skatox\"},\"image\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ElWeblogdeSkatox\\\/\",\"https:\\\/\\\/x.com\\\/skatox\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/skatox\\\/\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/MiguelAngelUsecheCastro\",\"https:\\\/\\\/x.com\\\/skatox\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/person\\\/e081bf33c5b0f1b0514e253cb578e1ba\",\"name\":\"Miguel Useche\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822\",\"contentUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822\",\"caption\":\"Miguel Useche\"},\"sameAs\":[\"https:\\\/\\\/skatox.com\",\"https:\\\/\\\/x.com\\\/skatox\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agregar rutas personalizadas en el API REST de WooCommerce","description":"Aprender a crear rutas personalizadas en el API REST de WooCommerce y crear tus propios endpoints a tus sitios web","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/","og_locale":"es_ES","og_type":"article","og_title":"Agregar rutas personalizadas en el API REST de WooCommerce","og_url":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/","og_site_name":"El blog de Skatox","article_publisher":"https:\/\/www.facebook.com\/ElWeblogdeSkatox\/","article_published_time":"2015-11-19T13:00:10+00:00","article_modified_time":"2023-02-28T17:08:35+00:00","og_image":[{"width":625,"height":603,"url":"https:\/\/skatox.com\/blog\/images\/2015\/12\/skatux.png","type":"image\/png"}],"author":"Miguel Useche","twitter_card":"summary_large_image","twitter_creator":"@skatox","twitter_site":"@skatox","twitter_misc":{"Escrito por":"Miguel Useche","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/#article","isPartOf":{"@id":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/"},"author":{"name":"Miguel Useche","@id":"https:\/\/skatox.com\/blog\/#\/schema\/person\/e081bf33c5b0f1b0514e253cb578e1ba"},"headline":"Agregar rutas personalizadas en el API REST de WooCommerce","datePublished":"2015-11-19T13:00:10+00:00","dateModified":"2023-02-28T17:08:35+00:00","mainEntityOfPage":{"@id":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/"},"wordCount":757,"commentCount":2,"publisher":{"@id":"https:\/\/skatox.com\/blog\/#organization"},"keywords":["api","ecommerce","rest","wordpress"],"articleSection":["Desarrollo web","Desarrollo y Programaci\u00f3n","Planetas","Wordpress"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/","url":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/","name":"Agregar rutas personalizadas en el API REST de WooCommerce","isPartOf":{"@id":"https:\/\/skatox.com\/blog\/#website"},"datePublished":"2015-11-19T13:00:10+00:00","dateModified":"2023-02-28T17:08:35+00:00","description":"Aprender a crear rutas personalizadas en el API REST de WooCommerce y crear tus propios endpoints a tus sitios web","breadcrumb":{"@id":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/skatox.com\/blog\/2015\/11\/19\/como-agregar-rutas-personalizadas-en-el-api-rest-de-woocommerce\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/skatox.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Agregar rutas personalizadas en el API REST de WooCommerce"}]},{"@type":"WebSite","@id":"https:\/\/skatox.com\/blog\/#website","url":"https:\/\/skatox.com\/blog\/","name":"El blog de Skatox","description":"Compartiendo mis opiniones inform\u00e1ticas mas all\u00e1 de los 280 caracteres","publisher":{"@id":"https:\/\/skatox.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/skatox.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/skatox.com\/blog\/#organization","name":"El blog de Skatox","url":"https:\/\/skatox.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/skatox.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/skatox.com\/blog\/images\/2022\/03\/tux.png","contentUrl":"https:\/\/skatox.com\/blog\/images\/2022\/03\/tux.png","width":218,"height":218,"caption":"El blog de Skatox"},"image":{"@id":"https:\/\/skatox.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ElWeblogdeSkatox\/","https:\/\/x.com\/skatox","https:\/\/www.linkedin.com\/in\/skatox\/","https:\/\/www.youtube.com\/c\/MiguelAngelUsecheCastro","https:\/\/x.com\/skatox\/"]},{"@type":"Person","@id":"https:\/\/skatox.com\/blog\/#\/schema\/person\/e081bf33c5b0f1b0514e253cb578e1ba","name":"Miguel Useche","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822","url":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822","contentUrl":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822","caption":"Miguel Useche"},"sameAs":["https:\/\/skatox.com","https:\/\/x.com\/skatox"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":3232,"url":"https:\/\/skatox.com\/blog\/2015\/12\/14\/como-enviar-los-correos-electronicos-predefinidos-de-woocommerce\/","url_meta":{"origin":3210,"position":0},"title":"C\u00f3mo enviar los correos electr\u00f3nicos predefinidos de Woocommerce","author":"Miguel Useche","date":"14 de diciembre de 2015","format":false,"excerpt":"WooCommerce es una excelente herramienta para montar tu propia tienda en l\u00ednea, es f\u00e1cil de instalar y usar gracias que est\u00e1 construida sobre WordPress. Ademas es posible modificar todo su comportamiento mediante la instalaci\u00f3n o construcci\u00f3n de plugins. Hace unas semanas construyendo un plugin para cambiar el flujo normal de\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3575,"url":"https:\/\/skatox.com\/blog\/2017\/08\/06\/cargar-los-productos-una-orden-woocommerce\/","url_meta":{"origin":3210,"position":1},"title":"Carga los productos de una orden en WooCommerce","author":"Miguel Useche","date":"6 de agosto de 2017","format":false,"excerpt":"WooCommerce es una excelente soluci\u00f3n para crear tu propia tienda en l\u00ednea. Al ser un plugin de WordPress permite aprovechar todo lo disponible para esta tecnolog\u00eda. Cada nueva versi\u00f3n incluye mejoras significantes pero sacrificando muchas veces compatibilidad hacia atr\u00e1s. Hace unos meses sali\u00f3 la versi\u00f3n 3.0 que introdujo varias mejoras\u2026","rel":"","context":"En \u00abDesarrollo y Programaci\u00f3n\u00bb","block_context":{"text":"Desarrollo y Programaci\u00f3n","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4462,"url":"https:\/\/skatox.com\/blog\/2022\/06\/10\/comprobar-si-una-pasarela-de-pago-esta-activa-en-woocommerce\/","url_meta":{"origin":3210,"position":2},"title":"Comprobar si una pasarela de pago esta activa en WooCommerce","author":"Miguel Useche","date":"10 de junio de 2022","format":false,"excerpt":"Si en WooCommerce necesitas comprobar si una pasarela de pago esta activa. Puedes obtener un listado de las pasarelas de pago (gateways) disponibles en el sitio con la funci\u00f3n: WC()->payment_gateways->get_available_payment_gateways(); El problema de esta funci\u00f3n es que estas instanciando WooCommerce y en algunos casos, algunas pasarelas dejan de registrarse o\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3152,"url":"https:\/\/skatox.com\/blog\/2015\/02\/14\/liberado-jquery-archive-list-3-0\/","url_meta":{"origin":3210,"position":3},"title":"Liberado jQuery Archive List 3.0","author":"Miguel Useche","date":"14 de febrero de 2015","format":false,"excerpt":"Luego de mas de un a\u00f1o sin poder dedicarme a este proyecto personal, he podido liberar la versi\u00f3n 3.0 de jQuery Archive List un widget de Wordpress para mostrar el historial de sitio de una mejor manera y con efectos de jQuery. El salto a la versi\u00f3n 3, es debido\u2026","rel":"","context":"En \u00abDesarrollo y Programaci\u00f3n\u00bb","block_context":{"text":"Desarrollo y Programaci\u00f3n","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3233,"url":"https:\/\/skatox.com\/blog\/2015\/12\/28\/como-ordenar-de-forma-personalizada-elementos-en-woocommerce\/","url_meta":{"origin":3210,"position":4},"title":"C\u00f3mo ordenar de forma personalizada elementos en Woocommerce","author":"Miguel Useche","date":"28 de diciembre de 2015","format":false,"excerpt":"En Woocommerce, puedes ordenar el listado de productos de varias formas en Ajustes -> Productos -> Ordenamiento de Productos por defecto, pero si en alguna parte del sitio necesitas crear tu propio listado a trav\u00e9s de una consulta (generalmente mediante WP_Query) a la base de datos, lo mas probable es\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3590,"url":"https:\/\/skatox.com\/blog\/2017\/08\/14\/error-json-malformed-en-zoho-api\/","url_meta":{"origin":3210,"position":5},"title":"Error de JSON malformed al enviar datos a Zoho","author":"Miguel Useche","date":"14 de agosto de 2017","format":false,"excerpt":"Zoho es una excelente herramienta en la nube para la administraci\u00f3n de negocios. Posee una excelente API REST para realizar integraci\u00f3n de datos entre sistemas. Hace unos d\u00edas tuve problemas para subir informaci\u00f3n al API y me arrojaba el error JSON malformed. C\u00f3mo solucionar el error de JSON malformed La\u2026","rel":"","context":"En \u00abDesarrollo y Programaci\u00f3n\u00bb","block_context":{"text":"Desarrollo y Programaci\u00f3n","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts\/3210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/comments?post=3210"}],"version-history":[{"count":0,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts\/3210\/revisions"}],"wp:attachment":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/media?parent=3210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/categories?post=3210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/tags?post=3210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}