{"id":3322,"date":"2016-05-26T08:00:28","date_gmt":"2016-05-26T11:00:28","guid":{"rendered":"https:\/\/www.mxcursos.com\/blog\/?p=3322"},"modified":"2019-03-16T03:01:23","modified_gmt":"2019-03-16T06:01:23","slug":"entendendo-e-utilizando-as-actions-ganchos-no-wordpress","status":"publish","type":"post","link":"https:\/\/www.mxcursos.com\/blog\/entendendo-e-utilizando-as-actions-ganchos-no-wordpress\/","title":{"rendered":"Entendendo e utilizando as actions (ganchos) no WordPress"},"content":{"rendered":"<p>Ao criarmos plugins ou temas no WordPress, muitas vezes queremos executar a\u00e7\u00f5es ap\u00f3s determinado comportamento, como por exemplo, depois de ser salvo um post ou criar usu\u00e1rio.<\/p>\n<p>Para isso o WordPress disponibiliza as actions (ganchos). A ideia \u00e9 exatamente essa, a possibilidade de voc\u00ea executar alguma a\u00e7\u00e3o ap\u00f3s algum procedimento, com isso expandindo formas de incrementar.<\/p>\n<p>Al\u00e9m consumir\u00a0as actions (ganchos) do WordPress ou plugins como WooCommerce, \u00a0voc\u00ea tamb\u00e9m pode cri\u00e1-las em seus plugins ou temas, para que o usu\u00e1rio\u00a0que venha a\u00a0consumir o recurso tenha essa op\u00e7\u00e3o.<\/p>\n<p>Basicamente para definir uma <strong>action<\/strong>, voc\u00ea utilizar\u00e1 a fun\u00e7\u00e3o <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/do_action\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>do_action<\/strong><\/a>, onde voc\u00ea definir\u00e1 o nome da a\u00e7\u00e3o a ser executada e os par\u00e2metros que ficar\u00e3o\u00a0dispon\u00edveis para essa fun\u00e7\u00e3o que ir\u00e1 consumir.<\/p>\n<pre class=\"lang:php decode:true\">do_action(NOME_DO_GANCHO, PARAMETROS...);<\/pre>\n<h2>Veremos isso na pr\u00e1tica<\/h2>\n<p>Imaginemos que voc\u00ea criou um tema e nesse tema voc\u00ea criou um contador de visualiza\u00e7\u00e3o de posts. Colocarei um c\u00f3digo para ilustrar essa situa\u00e7\u00e3o:<\/p>\n<pre class=\"lang:php decode:true \"> \/\/ID do Post\r\n $post_id = 5;\r\n \/\/Resgata do campo personalizado quantidade de visualiza\u00e7\u00e3o\r\n $counter = (int)get_post_meta($post_id, 'counter', true);\r\n \/\/Adicionar ao valor resgatado o mais 1\r\n $total = $counter+1;\r\n \/\/Atualiza o campo personalizado com novo valor\r\n update_post_meta($post_id, 'counter', $total);<\/pre>\n<p>Voc\u00ea agora quer disponibilizar esse tema e fazer com\u00a0\u00a0que as pessoas possam executar a\u00e7\u00f5es e n\u00e3o precisem\u00a0mexer no que voc\u00ea\u00a0j\u00e1 criou.<\/p>\n<p>Ent\u00e3o vamos disponibilizar uma <strong>action<\/strong>\u00a0logo ap\u00f3s realizar a contagem, e vamos passar o ID do Post\u00a0e a contagem atual.<\/p>\n<pre class=\"lang:php decode:true \">do_action('counter_after', $post_id, $total);\r\n<\/pre>\n<p>Veja que no primeiro par\u00e2metro passamos nome da action. \u00c9 com esse nome que o usu\u00e1rio pode executar a sua a\u00e7\u00e3o. E passamos tamb\u00e9m a vari\u00e1vel <strong>$post_id<\/strong> e tamb\u00e9m a vari\u00e1vel <strong>$total<\/strong>.<\/p>\n<p>E s\u00f3 com esse c\u00f3digo j\u00e1 possibilitamos os\u00a0usu\u00e1rios que usar\u00e3o o tema a\u00a0executem a\u00e7\u00f5es sem precisar\u00a0alterar o seu c\u00f3digo.<\/p>\n<p>E como\u00a0usaria essa action?<\/p>\n<p>Vamos dizer que um usu\u00e1rio quer acrescentar o total da visualiza\u00e7\u00e3o de um post quando\u00a0tem algu\u00e9m logado no WordPress.<\/p>\n<p>Primeiro, no <strong>functions.php,<\/strong> criar\u00edamos esta\u00a0fun\u00e7\u00e3o:<\/p>\n<pre class=\"lang:php decode:true\">\/\/Define a fun\u00e7\u00e3o\r\nfunction custom_counter_customer($post_id, $total){\r\n    \/\/Verifica se visitante est\u00e1 logado\r\n    if(is_user_logged_in()){\r\n      \/\/recuperar do campo personalizado\r\n       $current = (int)get_post_meta($post_id, 'counter_customer', true);\r\n       \/\/Atualize com novo valor\r\n       update_post_meta($post_id, 'counter_customer', $current+1);\r\n    }\r\n }\r\n<\/pre>\n<p>N\u00e3o basta s\u00f3 criar a fun\u00e7\u00e3o, precisamos falar para o WordPress que queremos que ele execute essa fun\u00e7\u00e3o numa parte especifica. Para isso usaremos a fun\u00e7\u00e3o <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener noreferrer\">add_action<\/a>.\u00a0Nela precisamos informar qual o gancho que queremos que seja disparado, o nome da nossa fun\u00e7\u00e3o, a ordem que ser\u00e1 executada a fun\u00e7\u00e3o e quantidade de par\u00e2metros que ter\u00e3o nela.<\/p>\n<pre class=\"lang:php decode:true\">add_action('counter_after', 'custom_counter_customer', 10, 2);<\/pre>\n<p>No\u00a0primeiro par\u00e2metro dizemos qual\u00a0ser\u00e1 o gancho, no caso <strong>counter_after<\/strong> que foi criado. Depois, o nome da nossa fun\u00e7\u00e3o, que \u00e9\u00a0<strong>custom_counter_customer.\u00a0<\/strong>O\u00a0terceiro \u00e9 a ordem que ser\u00e1 executada, que por padr\u00e3o \u00e9 10. Voc\u00ea colocar\u00e1 um valor maior se quiser que seja executada depois ou antes, porque pode ter outras fun\u00e7\u00f5es usando essa action.\u00a0O quarto \u00e9 a quantidade de par\u00e2metros que ter\u00e1 nossa fun\u00e7\u00e3o, no caso dois.<\/p>\n<p>Pronto, dessa forma vimos\u00a0como criar actions e como utiliz\u00e1-las.<\/p>\n<p>Espero ter ajudado.<\/p>\n<p>Um abra\u00e7o e at\u00e9 a pr\u00f3xima.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ao criarmos plugins ou temas no WordPress, muitas vezes queremos executar a\u00e7\u00f5es ap\u00f3s determinado comportamento, como por exemplo, depois de ser salvo um post ou criar usu\u00e1rio. Para isso o WordPress disponibiliza as actions (ganchos). A ideia \u00e9 exatamente essa, a possibilidade de voc\u00ea executar alguma a\u00e7\u00e3o ap\u00f3s algum procedimento, com isso expandindo formas de [&hellip;]<\/p>\n","protected":false},"author":67,"featured_media":3333,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[291],"tags":[],"class_list":["post-3322","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"_links":{"self":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/3322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/comments?post=3322"}],"version-history":[{"count":0,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/3322\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media\/3333"}],"wp:attachment":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media?parent=3322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/categories?post=3322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/tags?post=3322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}