{"id":12174940,"date":"2022-11-01T12:36:30","date_gmt":"2022-11-01T12:36:30","guid":{"rendered":"https:\/\/br.wordpress.org\/support\/topic\/erro-com-o-hook-save_post\/"},"modified":"2022-11-01T12:36:30","modified_gmt":"2022-11-01T12:36:30","slug":"erro-com-o-hook-save_post","status":"publish","type":"topic","link":"https:\/\/br.wordpress.org\/support\/topic\/erro-com-o-hook-save_post\/","title":{"rendered":"Erro com o hook save_post"},"content":{"rendered":"<p>Bom dia pessoal, <\/p>\n<p>Poderiam me ajudar, no caso eu preciso fazer 2 coisas logo ap\u00f3s que o post \u00e9 salvo, \u00e9 ele chegou a fazer mas ele me aponta erros de JSON INV\u00c1LIDO, e tamb\u00e9m de par\u00e2metros invalidos.<\/p>\n<p>No caso, \u00e9 tem um bloco personalizado que cria alguns spans, com classes diferentes e de acordo com essas classes ele pega e cria o termo\/categoria e grava no banco.<br \/>\nIsso quando verem no c\u00f3digo esta funcionando, mas ele da um erro no js que n\u00e3o deixa os campos tickados.<\/p>\n<p>O segundo \u00e9 eu preciso enviar um post, para um endpoint externo avisando que foi salvo algo no banco.<\/p>\n<pre><code>add_action( &#039;save_post_noticia&#039;, &#039;terms_save&#039;);\n\nfunction terms_save() {\n    global $post;\n\n    \/\/$str = html_entity_decode($post-&gt;post_content);\n    $str = !empty(html_entity_decode($post-&gt;post_content)) ? html_entity_decode($post-&gt;post_content) : &#039;null&#039;;\n    $d = new DOMDocument();\n    $d-&gt;loadHTML( $str );\n    $x = new DOMXpath($d);\n    $hash = $x-&gt;evaluate(&#039;\/\/span[contains(@class, &quot;hash&quot;)]&#039;);\n    $tickers = $x-&gt;evaluate(&#039;\/\/span[contains(@class, &quot;dollar&quot;)]&#039;);\n    $siglas = $x-&gt;evaluate(&#039;\/\/span[contains(@class, &quot;tag&quot;)]&#039;);\n    \/\/$at = $x-&gt;evaluate(&#039;\/\/span[contains(@class, &quot;at&quot;)]&#039;);\n  \n    \/\/var_dump($hash);\n    \/\/var_dump($tickers);\n    \/\/var_dump($siglas);\n    \n    if( count( $hash ) ){\n      $array = array();\n      $int = count( $hash );\n      foreach ( $hash as $el ) {\n        $term_name = str_replace(&#039;#&#039;, &#039;&#039;, $el-&gt;nodeValue );\n  \n        for ($i=0; $i &lt; $int; $i++) { \n          array_push($array, $term_name);\n        }\n  \n        if(!term_exists( $term_name, &#039;tags_notice&#039;)){\n  \n          wp_insert_term($term_name, &#039;tags_notice&#039;);\n          wp_set_object_terms( $post-&gt;ID, $array, &#039;tags_notice&#039;, false );\n  \n        }else{\n          wp_set_object_terms( $post-&gt;ID, $array, &#039;tags_notice&#039;, false );\n        }\n\n        \n      }\n    }\n  \n    if( count( $tickers ) ){\n      $array = array();\n      $int = count( $tickers );\n      foreach ( $tickers as $ticker ) {\n        $term_name = str_replace(&#039;$&#039;, &#039;&#039;, $ticker-&gt;nodeValue );\n  \n        for ($i=0; $i &lt; $int; $i++) { \n          array_push($array, $term_name);\n        }\n  \n        if(!term_exists( $term_name, &#039;ativos_notice&#039;)){\n  \n          wp_insert_term($term_name, &#039;ativos_notice&#039;);\n          wp_set_object_terms( $post-&gt;ID, $array, &#039;ativos_notice&#039;, false );\n          \n  \n        }else{\n  \n          wp_set_object_terms( $post-&gt;ID, $array, &#039;ativos_notice&#039;, false );\n  \n        }\n  \n      }\n    }\n  \n    if(  count( $siglas ) ){\n      $array = array();\n      $int = count( $siglas );\n      foreach ( $siglas as $sigla ) {\n        \n        for ($i=0; $i &lt; $int; $i++) { \n          array_push($array, $sigla-&gt;nodeValue);\n        }\n  \n        if(!term_exists( $sigla-&gt;nodeValue, &#039;siglas_notice&#039;)){\n  \n          wp_insert_term($sigla-&gt;nodeValue, &#039;siglas_notice&#039;);\n          wp_set_object_terms( $post-&gt;ID, $array, &#039;siglas_notice&#039;, false );\n  \n        }else{\n  \n          wp_set_object_terms( $post-&gt;ID, $array, &#039;siglas_notice&#039;, false );\n  \n        }\n      }\n    }\n\n    $post_id = $post-&gt;ID;\n\n    viacurl($post_id);\n    \n}\n\nfunction viacurl($post_id)\n{\n\n\t$curl = curl_init();\n\n\tcurl_setopt_array($curl, array(\n        CURLOPT_URL =&gt; &#039;http:\/\/localhost\/mensageria\/wp-json\/wp\/v2\/noticias\/&#039;.$post_id.&#039;\/?acf_format=standard&#039;,\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_ENCODING =&gt; &#039;&#039;,\n        CURLOPT_MAXREDIRS =&gt; 10,\n        CURLOPT_TIMEOUT =&gt; 0,\n        CURLOPT_FOLLOWLOCATION =&gt; true,\n        CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_1_1,\n        CURLOPT_CUSTOMREQUEST =&gt; &#039;GET&#039;,\n\t));\n\n\t$response = curl_exec($curl);\n\n\tcurl_close($curl);\n\n  $urlendpoint = get_field(&#039;endpoint_url_notices&#039;, &#039;option&#039;);\n\n  $data = $response;\n  $url = $urlendpoint;\n\n  httpPost($url, $data);\n\n}\n\nfunction httpPost($url, $data)\n{\n\n    $tokenendpoint = get_field(&#039;token_endpoint_notices&#039;, &#039;option&#039;);\n    $typetoken = get_field(&#039;field_635c140300703&#039;,&#039;option&#039;);\n\n    $curl = curl_init();\n\n    curl_setopt_array($curl, array(\n        CURLOPT_URL =&gt; $url,\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_POSTFIELDS =&gt; $data,\n        CURLOPT_HTTPHEADER =&gt; array($tokenendpoint,$typetoken),\n        CURLOPT_ENCODING =&gt; &#039;&#039;,\n        CURLOPT_MAXREDIRS =&gt; 10,\n        CURLOPT_TIMEOUT =&gt; 0,\n        CURLOPT_FOLLOWLOCATION =&gt; true,\n        CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_1_1,\n        CURLOPT_CUSTOMREQUEST =&gt; &#039;POST&#039;,\n        CURLOPT_RETURNTRANSFER =&gt; true,\n    ));\n\n    $response = curl_exec($curl);\n\n    \/\/ Further processing ...\n    if ($response == &quot;OK&quot;) { \n        echo &#039;sucess api send&#039;;\n    } else { \n        echo &#039;api not send&#039;;\n    }\n\n    curl_close($curl);\n\n    return $response;\n}<\/code><\/pre>\n<p>Por favor se puderem me ajudar.<\/p>\n","protected":false},"template":"","class_list":["post-12174940","topic","type-topic","status-publish","hentry","topic-tag-restapi-term-save_post-curl-tax-taxonomie"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/br.wordpress.org\/support\/wp-json\/wp\/v2\/topic\/12174940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/br.wordpress.org\/support\/wp-json\/wp\/v2\/topic"}],"about":[{"href":"https:\/\/br.wordpress.org\/support\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":0,"href":"https:\/\/br.wordpress.org\/support\/wp-json\/wp\/v2\/topic\/12174940\/revisions"}],"wp:attachment":[{"href":"https:\/\/br.wordpress.org\/support\/wp-json\/wp\/v2\/media?parent=12174940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}