{"id":12360787,"date":"2026-03-11T05:16:38","date_gmt":"2026-03-10T21:16:38","guid":{"rendered":"https:\/\/www.likacloud.com\/knowledge\/%e7%9c%9f%e9%a6%99%ef%bc%81wordpress-%e8%87%aa%e5%ae%9a%e4%b9%89%e6%96%87%e7%ab%a0%e7%b1%bb%e5%9e%8b%e7%bb%88%e6%9e%81%e6%8c%87%e5%8d%97%ef%bc%9a%e4%bb%8e%e9%9b%b6%e5%88%b0%e7%b2%be%e9%80%9a\/"},"modified":"2026-06-04T06:24:04","modified_gmt":"2026-06-03T22:24:04","slug":"wordpress-custom-post-types-ultimate-guide","status":"publish","type":"knowledge_post","link":"https:\/\/www.likacloud.com\/pt\/knowledge\/wordpress\/wordpress-custom-post-types-ultimate-guide\/","title":{"rendered":"O guia definitivo para tipos de postagem personalizados do WordPress: do zero \u00e0 maestria!"},"content":{"rendered":"<h2 class=\"wp-block-heading\">O que s\u00e3o tipos de artigos personalizados no WordPress?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O WordPress inclui dois tipos de conte\u00fado: \u201cartigos\u201d e \u201cp\u00e1ginas\u201d. No entanto, por vezes, estes tipos predefinidos n\u00e3o conseguem satisfazer as necessidades de estruturas de websites complexas. Os tipos de artigos personalizados (CPT) s\u00e3o uma das funcionalidades principais do WordPress, permitindo que os programadores criem novos tipos de conte\u00fado com estruturas de dados, interfaces de gest\u00e3o e l\u00f3gicas de apresenta\u00e7\u00e3o independentes. Pode consider\u00e1-los como \u201ccontentores\u201d personalizados para tipos de conte\u00fado espec\u00edficos, como produtos, portef\u00f3lios, eventos, livros, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de ativar o CPT, o seu backend do WordPress ir\u00e1 gerar itens de menu separados, com funcionalidades de listagem, edi\u00e7\u00e3o e publica\u00e7\u00e3o independentes, tal como o m\u00f3dulo \u201cArtigos\u201d nativo, mas os seus dados estar\u00e3o completamente separados dos artigos e p\u00e1ginas. Por exemplo, um site de com\u00e9rcio eletr\u00f3nico pode utilizar os \u201cArtigos\u201d predefinidos para publicar blogs e, ao mesmo tempo, criar um CPT denominado \u201cProdutos\u201d para gerir todas as informa\u00e7\u00f5es sobre os produtos. Os dois n\u00e3o interferem entre si no backend, e a apresenta\u00e7\u00e3o no frontend pode adotar estilos e layouts completamente diferentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em suma, o CPT ultrapassa as limita\u00e7\u00f5es do WordPress como uma plataforma de blogue tradicional, permitindo a cria\u00e7\u00e3o flex\u00edvel de v\u00e1rios tipos de websites, incluindo portais de not\u00edcias, lojas online, sites institucionais e f\u00f3runs comunit\u00e1rios, sem depender de plugins de terceiros complexos que podem afetar o desempenho. \u00c9 uma tecnologia fundamental para garantir uma estrutura de conte\u00fado clara e uma gest\u00e3o eficiente do website.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Leitura recomendada <a href=\"https:\/\/www.likacloud.com\/pt\/knowledge\/wordpress\/wordpress-theme-development-customization-guide\/\">Como criar um site profissional essencial: um guia completo para o desenvolvimento e a personaliza\u00e7\u00e3o de temas do WordPress<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<h2 class=\"wp-block-heading\">Por que usar tipos de artigos personalizados?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No desenvolvimento de websites, organizar o conte\u00fado corretamente \u00e9 metade do sucesso. \u00c0 medida que o conte\u00fado do website se torna cada vez mais complexo, colocar todas as informa\u00e7\u00f5es em \u201cartigos\u201d ou \u201cp\u00e1ginas\u201d pode causar v\u00e1rios problemas.<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/pt\/tolink\/ultahost-wordpress-hosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      Hospedagem para sites WordPress da UltraHost    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Garantia de reembolso em 30 dias, largura de banda ilimitada e banco de dados, prote\u00e7\u00e3o contra DDoS gratuita; desconto de 50% na compra de 3 anos (planos de 4 TB a 10 TB).<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/pt\/tolink\/ultahost-wordpress-hosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251227020448.webp\" alt=\"LOGO da UltaHost\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251229052118.webp\" alt=\"LOGO da UltaHost\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/pt\/tolink\/ultahost-wordpress-hosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       p\u00e1gina de acesso    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<p class=\"wp-block-paragraph\">Primeiro, a facilidade de gerenciamento e manuten\u00e7\u00e3o. Quando todo o conte\u00fado est\u00e1 misturado, \u00e9 muito dif\u00edcil para o administrador do site encontrar um item espec\u00edfico ou realizar opera\u00e7\u00f5es em massa. Por exemplo, um tipo de conte\u00fado \u201cEvento\u201d pode ter campos exclusivos como \u201cData do evento\u201d, \u201cLocal do evento\u201d, \u201cLink de inscri\u00e7\u00e3o\u201d, etc. \u00c9 claramente confuso gerenciar estes juntamente com artigos de blogue comuns. Criar um CPT separado para cada tipo de conte\u00fado permite ter interfaces exclusivas de publica\u00e7\u00e3o, edi\u00e7\u00e3o e filtragem, o que aumenta significativamente a efici\u00eancia das opera\u00e7\u00f5es de back-end.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em segundo lugar, a clareza e a escalabilidade da estrutura de dados. Os artigos e as p\u00e1ginas do WordPress utilizam tabelas e campos de dados comuns. J\u00e1 o CPT permite definir campos exclusivos para tipos espec\u00edficos de conte\u00fado (atrav\u00e9s de plugins de campos personalizados ou campos personalizados avan\u00e7ados), que podem ser armazenados, consultados e acessados de forma mais organizada. Por exemplo, um CPT de \u201cfilme\u201d pode incluir campos como \u201crealizador\u201d, \u201cdura\u00e7\u00e3o\u201d e \u201cclassifica\u00e7\u00e3o\u201d, que n\u00e3o podem ser armazenados de forma eficiente nos \u201cartigos\u201d nativos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al\u00e9m disso, \u00e9 a flexibilidade da apresenta\u00e7\u00e3o front-end. Atrav\u00e9s da cria\u00e7\u00e3o de ficheiros de modelo independentes para diferentes CPT (como, por exemplo, <code data-no-auto-translation=\"\">single-{cpt-slug}.php<\/code> e <code data-no-auto-translation=\"\">archive-{cpt-slug}.php<\/code>Por exemplo, voc\u00ea pode controlar totalmente a forma como eles s\u00e3o apresentados no front-end, implementando um design completamente diferente do resto do site, sem a necessidade de modificar um \u00fanico modelo atrav\u00e9s de julgamentos condicionais complexos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por \u00faltimo, o desempenho e a otimiza\u00e7\u00e3o de consultas. Ao executar consultas de banco de dados, consultas para CPTs espec\u00edficos (como consultar todos os \u201ceventos\u201d pendentes) s\u00e3o muito mais eficientes do que filtrar numa tabela grande que cont\u00e9m todos os tipos de conte\u00fado. Isto ajuda a melhorar a velocidade de carregamento do site e o desempenho geral. \u00c9 uma pr\u00e1tica recomendada para melhorar a profissionalidade e o desempenho dos sites WordPress a n\u00edvel de arquitetura.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Leitura recomendada <a href=\"https:\/\/www.likacloud.com\/pt\/knowledge\/website-building\/ultimate-guide-to-website-building-from-zero-to-professional-2026\/\">Guia definitivo para a cria\u00e7\u00e3o de websites: o processo completo e os passos essenciais para criar um website profissional do zero.<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<h2 class=\"wp-block-heading\">Como criar um tipo de artigo personalizado<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Existem duas abordagens principais para criar um CPT: registar atrav\u00e9s da escrita de c\u00f3digo e utilizar plugins dedicados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Registre-se usando o c\u00f3digo (m\u00e9todo recomendado)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para os desenvolvedores, atrav\u00e9s do c\u00f3digo no tema <code data-no-auto-translation=\"\">functions.php<\/code> Registrar o CPT no ficheiro \u00e9 a forma mais transparente e control\u00e1vel de o fazer. Isto aproveita as funcionalidades fornecidas pelo WordPress. <code data-no-auto-translation=\"\">register_post_type()<\/code> Fun\u00e7\u00f5es. Este m\u00e9todo associa funcionalidades a temas ou plugins personalizados, facilitando a migra\u00e7\u00e3o e evitando a perda de dados caso o plugin seja desativado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui est\u00e1 um exemplo completo de c\u00f3digo para criar um CPT chamado \u201cPortf\u00f3lio\u201d:<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/pt\/tolink\/hosting-shared-hosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      hospedagem compartilhada da hosting.com    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Alto desempenho com CPUs AMD EPYC, armazenamento SSD NVMe e LiteSpeed, suporte interno especializado 24 horas por dia, 7 dias por semana, medidas de seguran\u00e7a avan\u00e7adas, incluindo SSL, for\u00e7a bruta, malware e prote\u00e7\u00e3o contra DDoS, economia de at\u00e9 73%<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/pt\/tolink\/hosting-shared-hosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/09\/20250901222940.svg\" alt=\"LOGOTIPO da hosting.com\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251228220957.webp\" alt=\"LOGOTIPO da hosting.com\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/pt\/tolink\/hosting-shared-hosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       p\u00e1gina de acesso    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">function create_portfolio_post_type() {\n    $labels = array(\n        &#039;name&#039;               =&gt; &#039;\u4f5c\u54c1\u96c6&#039;,\n        &#039;singular_name&#039;      =&gt; &#039;\u4f5c\u54c1&#039;,\n        &#039;menu_name&#039;          =&gt; &#039;\u4f5c\u54c1\u96c6&#039;,\n        &#039;add_new&#039;            =&gt; &#039;\u6dfb\u52a0\u65b0\u4f5c\u54c1&#039;,\n        &#039;add_new_item&#039;       =&gt; &#039;\u6dfb\u52a0\u65b0\u4f5c\u54c1&#039;,\n        &#039;edit_item&#039;          =&gt; &#039;\u7f16\u8f91\u4f5c\u54c1&#039;,\n        &#039;new_item&#039;           =&gt; &#039;\u65b0\u4f5c\u54c1&#039;,\n        &#039;view_item&#039;          =&gt; &#039;\u67e5\u770b\u4f5c\u54c1&#039;,\n        &#039;search_items&#039;       =&gt; &#039;\u641c\u7d22\u4f5c\u54c1&#039;,\n        &#039;not_found&#039;          =&gt; &#039;\u672a\u627e\u5230\u4f5c\u54c1&#039;,\n        &#039;not_found_in_trash&#039; =&gt; &#039;\u56de\u6536\u7ad9\u4e2d\u672a\u627e\u5230\u4f5c\u54c1&#039;\n    );\n\n$args = array(\n        &#039;labels&#039;             =&gt; $labels,\n        &#039;public&#039;             =&gt; true,\n        &#039;publicly_queryable&#039; =&gt; true,\n        &#039;show_ui&#039;            =&gt; true,\n        &#039;show_in_menu&#039;       =&gt; true,\n        &#039;query_var&#039;          =&gt; true,\n        &#039;rewrite&#039;            =&gt; array( &#039;slug&#039; =&gt; &#039;portfolio&#039; ),\n        &#039;capability_type&#039;    =&gt; &#039;post&#039;,\n        &#039;has_archive&#039;        =&gt; true,\n        &#039;hierarchical&#039;       =&gt; false,\n        &#039;menu_position&#039;      =&gt; 5,\n        &#039;menu_icon&#039;          =&gt; &#039;dashicons-format-gallery&#039;,\n        &#039;supports&#039;           =&gt; array( &#039;title&#039;, &#039;editor&#039;, &#039;thumbnail&#039;, &#039;excerpt&#039; )\n    );\n\nregister_post_type( &#039;portfolio&#039;, $args );\n}\nadd_action( &#039;init&#039;, &#039;create_portfolio_post_type&#039; );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo permite que voc\u00ea obtenha o nome do usu\u00e1rio que est\u00e1 atualmente conectado ao servidor. <code data-no-auto-translation=\"\">$labels<\/code> O array define o texto que \u00e9 exibido na interface de back-end, atrav\u00e9s de <code data-no-auto-translation=\"\">$args<\/code> O array define as caracter\u00edsticas de comportamento do CPT, como se o acesso \u00e9 p\u00fablico ou n\u00e3o, e as regras de reescrita de URL.<code data-no-auto-translation=\"\">slug<\/code> Defina como <code data-no-auto-translation=\"\">portfolio<\/code>), as funcionalidades suportadas (t\u00edtulo, editor, imagens em destaque, etc.) e os \u00edcones do menu de back-end. Por \u00faltimo, utilize <code data-no-auto-translation=\"\">add_action()<\/code> O gancho executa a fun\u00e7\u00e3o de registo durante a inicializa\u00e7\u00e3o do WordPress.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Criar usando plugins<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para os utilizadores que n\u00e3o est\u00e3o familiarizados com c\u00f3digo, podem utilizar plugins para criar e gerir rapidamente os CPTs. Plugins populares, como o Custom Post Type UI e o Toolset Types, fornecem uma interface de utilizador intuitiva que permite configurar todos os par\u00e2metros dos CPTs com apenas alguns cliques, incluindo etiquetas, par\u00e2metros e at\u00e9 mesmo taxonomias personalizadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A vantagem do m\u00e9todo de plugins \u00e9 que \u00e9 f\u00e1cil de come\u00e7ar a usar e n\u00e3o requer conhecimentos de c\u00f3digo. No entanto, a desvantagem \u00e9 que a funcionalidade e o desempenho dependem inteiramente dos plugins, o que pode representar um risco se, no futuro, os plugins deixarem de ser atualizados ou n\u00e3o forem compat\u00edveis com a vers\u00e3o principal do WordPress. Al\u00e9m disso, a l\u00f3gica da funcionalidade do site est\u00e1 dispersa pelos plugins, o que dificulta a manuten\u00e7\u00e3o e a migra\u00e7\u00e3o do c\u00f3digo a longo prazo. Recomenda-se a sua utiliza\u00e7\u00e3o na fase de prototipagem r\u00e1pida ou em projetos n\u00e3o cr\u00edticos.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Leitura recomendada <a href=\"https:\/\/www.likacloud.com\/pt\/knowledge\/website-building\/complete-guide-to-building-a-website-for-beginners-step-by-step-process\/\">Um guia de leitura obrigat\u00f3ria para criadores de sites: o processo completo de cria\u00e7\u00e3o de um site profissional do zero ao um<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<h2 class=\"wp-block-heading\">Criar um modelo para um tipo de artigo personalizado.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o basta criar um CPT em segundo plano; para que o seu conte\u00fado seja apresentado da forma desejada no front-end, \u00e9 necess\u00e1rio criar um ficheiro de modelo de tema correspondente. O WordPress segue regras espec\u00edficas de hierarquia de modelos para localizar e aceder a estes ficheiros.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para controlar completamente o seu \u201cportf\u00f3lio\u201d CPT, voc\u00ea precisa, pelo menos, criar dois ficheiros de modelo:<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/pt\/tolink\/interserver-webhosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      Hospedagem Compartilhada InterServer    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Hospedagem compartilhada $2.50 USD por m\u00eas, primeiro m\u00eas $0.1 USD c\u00f3digo promocional tryinterserver, 461 scripts de aplicativos em nuvem, instala\u00e7\u00e3o com um clique.<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/pt\/tolink\/interserver-webhosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251228045033.svg\" alt=\"Logo da InterServer\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251229054830.webp\" alt=\"Logo da InterServer\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/pt\/tolink\/interserver-webhosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       p\u00e1gina de acesso    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<p class=\"wp-block-paragraph\">1. Modelo de p\u00e1gina de arquivo: usado para mostrar uma lista de todas as obras. Nomeie este ficheiro como . <code data-no-auto-translation=\"\">archive-portfolio.php<\/code> E coloque-o na sua pasta de temas. O WordPress acede ao <code data-no-auto-translation=\"\">yoursite.com\/portfolio\/<\/code> Quando isso acontecer, este modelo ser\u00e1 usado prioritariamente. Voc\u00ea pode us\u00e1-lo aqui. <code data-no-auto-translation=\"\">WP_Query<\/code> Ou, use o ciclo principal para obter e exibir todos os artigos do tipo \u201cPortf\u00f3lio\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2. Modelo de artigo \u00fanico: usado para mostrar a p\u00e1gina de detalhes de uma \u00fanica obra. Denomine este ficheiro como  2. \u5355\u7bc7\u6587\u7ae0\u6a21\u677f\uff1a\u7528\u4e8e\u5c55\u793a\u5355\u4e2a\u4f5c\u54c1\u7684\u8be6\u60c5\u9875\u3002\u5c06\u6b64\u6587\u4ef6\u547d\u540d\u4e3a \u3002 <code data-no-auto-translation=\"\">single-portfolio.php<\/code>Quando visita <code data-no-auto-translation=\"\">yoursite.com\/portfolio\/your-work\/<\/code> Quando isso acontece, o WordPress chama este modelo. Voc\u00ea pode projetar livremente o seu layout interno e chamar os campos personalizados definidos para este CPT.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui est\u00e1 <code data-no-auto-translation=\"\">archive-portfolio.php<\/code> Um exemplo de infraestrutura:<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">&lt;section class=&quot;portfolio-archive&quot;&gt;\n    &lt;h1&gt;Os nossos trabalhos&lt;\/h1&gt;\n    &lt;div class=&quot;portfolio-items&quot;&gt;\n        \n            &lt;article class=&quot;portfolio-item&quot;&gt;\n                &lt;a href=&quot;\/pt\/&lt;\/?php the_permalink(); ?&gt;&quot;&gt;\n                    \n                    &lt;h2&gt;\\n&lt;\/h2&gt;\n                &lt;\/a&gt;\n                &lt;p&gt;\\n&lt;\/p&gt;\n            &lt;\/article&gt;\n        \n    &lt;\/div&gt;\n    &lt;?php the_posts_pagination(); ?&gt;\n&lt;\/section&gt;\n\n\\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ao criar estes modelos exclusivos, o seu conte\u00fado CPT ter\u00e1 uma \u201capar\u00eancia\u201d distinta, que se integra perfeitamente com o resto do site, mas que tamb\u00e9m tem as suas pr\u00f3prias caracter\u00edsticas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fun\u00e7\u00f5es avan\u00e7adas e melhores pr\u00e1ticas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de registar e apresentar com sucesso o CPT, pode otimiz\u00e1-lo ainda mais com algumas funcionalidades avan\u00e7adas e melhores pr\u00e1ticas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Classe personalizada associada<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Assim como os \u201cartigos\u201d t\u00eam uma \u201clista de categorias\u201d e \u201cetiquetas\u201d, o seu CPT tamb\u00e9m pode ter o seu pr\u00f3prio sistema de categoriza\u00e7\u00e3o. Por exemplo, crie uma taxonomia de \u201ctipos de projetos\u201d para o seu \u201cportf\u00f3lio\u201d (utilizando &lt;). <code data-no-auto-translation=\"\">register_taxonomy()<\/code> Voc\u00ea pode usar a fun\u00e7\u00e3o de filtragem para organizar o seu trabalho em categorias como \u201cDesign de p\u00e1ginas web\u201d, \u201cDesign de marcas\u201d, \u201cUI\/UX\u201d, etc., o que facilitar\u00e1 a filtragem front-end e a gest\u00e3o back-end.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\\nUtilizar campos personalizados avan\u00e7ados.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A caixa de edi\u00e7\u00e3o de artigos nativa do WordPress n\u00e3o consegue satisfazer as necessidades de entrada de dados complexos. A integra\u00e7\u00e3o de plugins como Advanced Custom Fields (ACF) ou Meta Box permite criar grupos de campos intuitivos para os seus CPT, como galerias de imagens, seletores, artigos associados, seletores de data, etc. Isto transforma o seu CPT de um simples recipiente de artigos num poderoso sistema de entrada de dados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Regras de reescrita e links fixos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ajustes feitos durante o registro no CPT. <code data-no-auto-translation=\"\">rewrite<\/code> Os par\u00e2metros afetam a estrutura do URL. Certifique-se de que, ap\u00f3s a cria\u00e7\u00e3o do CPT, aceda \u00e0 p\u00e1gina \u201cDefini\u00e7\u00f5es\u201d -&gt; \u201cLinks Permanentes\u201d no backend do WordPress e clique simplesmente no bot\u00e3o \u201cGuardar Altera\u00e7\u00f5es\u201d para atualizar as regras de reescrita e garantir que a nova estrutura do URL esteja ativa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Considera\u00e7\u00f5es de desempenho<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Evite registar funcionalidades desnecess\u00e1rias no CPT (como coment\u00e1rios e cita\u00e7\u00f5es). Utilize-as de forma razo\u00e1vel. <code data-no-auto-translation=\"\">WP_Query<\/code> N\u00e3o. <code data-no-auto-translation=\"\">posts_per_page<\/code> E o mecanismo de cache, especialmente quando se consultam muitas entradas de CPT na p\u00e1gina de listagem. Para consultas de associa\u00e7\u00e3o muito complexas, considere utilizar a API Transients para o cache.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\\nC\u00f3digo da fun\u00e7\u00e3o de separa\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para ambientes de produ\u00e7\u00e3o, \u00e9 altamente recomend\u00e1vel que o c\u00f3digo para criar o CPT seja separado do c\u00f3digo do tema. <code data-no-auto-translation=\"\">functions.php<\/code> Remova-os do c\u00f3digo do tema e coloque-os num \u201cplug-in de funcionalidades personalizadas\u201d separado. A vantagem disto \u00e9 que, mesmo que mude de tema no futuro, as defini\u00e7\u00f5es CPT continuar\u00e3o a existir e os dados n\u00e3o ser\u00e3o perdidos, permitindo a separa\u00e7\u00e3o entre a funcionalidade e a apresenta\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">resumos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Os tipos de artigos personalizados s\u00e3o a chave para desbloquear o potencial de gest\u00e3o de conte\u00fados do WordPress. Ao permitir que crie estruturas de dados e l\u00f3gicas de apresenta\u00e7\u00e3o independentes para diferentes tipos de conte\u00fado, o WordPress transforma-se de uma excelente plataforma de blogues num sistema de gest\u00e3o de conte\u00fados completo. Quer pretenda criar um portef\u00f3lio, gerir um cat\u00e1logo de produtos, apresentar uma lista de eventos ou desenvolver aplica\u00e7\u00f5es mais complexas, o CPT oferece solu\u00e7\u00f5es claras, eficientes e f\u00e1ceis de manter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Desde a cria\u00e7\u00e3o atrav\u00e9s do registo de c\u00f3digo ou da utiliza\u00e7\u00e3o de plugins, passando pelo design de ficheiros de modelos exclusivos, at\u00e9 \u00e0 expans\u00e3o com taxonomias personalizadas e campos avan\u00e7ados, dominar o CPT significa que consegue controlar o WordPress de uma forma mais profissional e flex\u00edvel. Seguir as melhores pr\u00e1ticas de separar o c\u00f3digo de funcionalidade do tema garante que a estrutura do seu website seja sustent\u00e1vel e robusta a longo prazo, estabelecendo uma base s\u00f3lida para o desenvolvimento futuro.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Perguntas frequentes Perguntas frequentes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Os tipos de artigos personalizados afetam a velocidade do site?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A cria\u00e7\u00e3o e a utiliza\u00e7\u00e3o de tipos de artigos personalizados de forma razo\u00e1vel n\u00e3o afetar\u00e3o negativamente a velocidade do site. Na verdade, ao classificar o conte\u00fado, \u00e9 poss\u00edvel gerar consultas de base de dados mais precisas e eficientes, o que pode, por sua vez, melhorar a velocidade de carregamento de p\u00e1ginas espec\u00edficas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os fatores que afetam a velocidade geralmente est\u00e3o relacionados com a complexidade das consultas nos ficheiros de modelo escritos para o CPT, a exist\u00eancia de uma grande quantidade de imagens n\u00e3o otimizadas a carregar ou a utiliza\u00e7\u00e3o de consultas associadas complexas sem cache. Seguir as melhores pr\u00e1ticas de desempenho do WordPress, como controlar o n\u00famero de consultas, utilizar a pagina\u00e7\u00e3o e ativar o cache de objetos, \u00e9 fundamental para manter a velocidade do site.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Se eu eliminar o tipo de artigo personalizado, os artigos nele contidos ser\u00e3o perdidos?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Isso depende da forma como foi eliminado. Se apenas tiver removido o c\u00f3digo de registo do CPT do c\u00f3digo, ou desativado o plugin que cria o CPT, ent\u00e3o n\u00e3o ver\u00e1 o menu de gest\u00e3o do CPT na \u00e1rea de administra\u00e7\u00e3o, mas os dados dos artigos continuar\u00e3o a existir no WordPress. <code data-no-auto-translation=\"\">wp_posts<\/code> Na tabela do banco de dados, s\u00e3o apenas os seus <code data-no-auto-translation=\"\">post_type<\/code> Os valores de campo (como \u201cportf\u00f3lio\u201d) j\u00e1 n\u00e3o s\u00e3o reconhecidos pelo n\u00facleo do WordPress como tipos de publica\u00e7\u00e3o v\u00e1lidos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste caso, pode restaurar o acesso ao modificar o c\u00f3digo para voltar a registar os CPTs com o mesmo nome. Em casos extremos, tamb\u00e9m pode consultar a base de dados manualmente para localizar esses artigos. <code data-no-auto-translation=\"\">post_type<\/code> Altere de volta para \u201cpost\u201d ou \u201cpage\u201d. Este \u00e9 um aviso importante: antes de fazer qualquer altera\u00e7\u00e3o estrutural significativa (como remover permanentemente um CPT), certifique-se de fazer um backup do seu banco de dados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Como adicionar campos personalizados para tipos de artigos personalizados?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Existem duas abordagens principais para adicionar campos personalizados ao CPT. A primeira consiste em utilizar o painel de \u201cCampos Personalizados\u201d integrado do WordPress, mas a sua interface \u00e9 simples e as suas funcionalidades s\u00e3o limitadas, n\u00e3o sendo adequado para necessidades complexas. A segunda abordagem, que \u00e9 a recomendada, consiste em utilizar plugins de gest\u00e3o de campos de terceiros, como o Advanced Custom Fields (ACF) ou o Meta Box.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estes plugins fornecem uma interface intuitiva que permite criar grupos de campos (por exemplo, \u201cInforma\u00e7\u00f5es do produto\u201d) e atribu\u00ed-los a um CPT espec\u00edfico (como \u201cProduto\u201d). Em seguida, pode ver estes campos de entrada amig\u00e1veis na p\u00e1gina de edi\u00e7\u00e3o desse CPT. Nos modelos front-end, utilize as fun\u00e7\u00f5es fornecidas pelo plugin (como o ). <code data-no-auto-translation=\"\">get_field()<\/code>Assim, pode obter e exibir facilmente os valores desses campos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Os tipos de artigos personalizados podem ser utilizados em conjunto com os modelos de p\u00e1gina?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sim, mas s\u00e3o duas funcionalidades diferentes, mas que podem ser combinadas. Os modelos de p\u00e1gina s\u00e3o usados para selecionar diferentes layouts para uma \u00fanica \u201cp\u00e1gina\u201d, enquanto os modelos de CPT s\u00e3o usados para controlar a l\u00f3gica de exibi\u00e7\u00e3o de todo o tipo de conte\u00fado. Pode criar um \u201cmodelo de p\u00e1gina\u201d para um artigo espec\u00edfico de um CPT.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo, voc\u00ea tem um CPT \u201cMembro\u201d, cujo modelo padr\u00e3o \u00e9 <code data-no-auto-translation=\"\">single-member.php<\/code>Voc\u00ea pode criar um nome chamado <code data-no-auto-translation=\"\">page-template-leadership.php<\/code> Em seguida, selecione o modelo de p\u00e1gina e, em seguida, no <code data-no-auto-translation=\"\">WP_Query<\/code> Pesquise os membros de uma posi\u00e7\u00e3o espec\u00edfica no CPT e use o layout deste modelo para mostr\u00e1-los. Nos bastidores, voc\u00ea precisa criar uma nova p\u00e1gina em \u201cP\u00e1ginas\u201d e selecionar este modelo personalizado para ela. Isso demonstra a flexibilidade do sistema de modelos do WordPress.<\/p>","protected":false},"excerpt":{"rendered":"<p>Este artigo apresenta uma introdu\u00e7\u00e3o sistem\u00e1tica aos Tipos de Artigos Personalizados (CPT) do WordPress. Ele explica como os CPTs ultrapassam as limita\u00e7\u00f5es padr\u00e3o de \u201cartigos\u201d e \u201cp\u00e1ginas\u201d, criando estruturas de dados e interfaces de gest\u00e3o independentes para conte\u00fados como produtos, portf\u00f3lios, etc. O artigo descreve as vantagens da utiliza\u00e7\u00e3o de CPTs em termos de facilidade de gest\u00e3o, clareza da estrutura de dados, flexibilidade de apresenta\u00e7\u00e3o front-end e otimiza\u00e7\u00e3o de desempenho, e fornece uma breve descri\u00e7\u00e3o geral de dois m\u00e9todos de cria\u00e7\u00e3o: programa\u00e7\u00e3o e utiliza\u00e7\u00e3o de plugins.<\/p>","protected":false},"author":2,"featured_media":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[118,446,1931,379,1972],"knowledge_category":[280],"class_list":["post-12360787","knowledge_post","type-knowledge_post","status-publish","hentry","tag-wordpress","tag-content-management","tag-template-making","tag-web-development","tag-custom-post-types","knowledge_category-wordpress"],"acf":{"site_seo_keywords":"WordPress\u81ea\u5b9a\u4e49\u6587\u7ae0\u7c7b\u578b,CPT\u521b\u5efa\u6559\u7a0b,WordPress\u5f00\u53d1,\u5185\u5bb9\u7ba1\u7406,\u7f51\u7ad9\u67b6\u6784,\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u5b57\u6bb5,register_post_type,WordPress\u6027\u80fd\u4f18\u5316"},"_links":{"self":[{"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/knowledge_posts\/12360787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/knowledge_posts"}],"about":[{"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/types\/knowledge_post"}],"author":[{"embeddable":true,"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":1,"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/knowledge_posts\/12360787\/revisions"}],"predecessor-version":[{"id":12405398,"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/knowledge_posts\/12360787\/revisions\/12405398"}],"wp:attachment":[{"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/media?parent=12360787"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/tags?post=12360787"},{"taxonomy":"knowledge_category","embeddable":true,"href":"https:\/\/www.likacloud.com\/pt\/wp-json\/wp\/v2\/knowledge_category?post=12360787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}