Descrição
O ACPT permite criar e gerenciar tipos de post personalizados, taxonomias, campos e templates sem precisar escrever código. Ideal para quem deseja transformar o WordPress em um verdadeiro CMS, ele oferece recursos visuais avançados e integração com plugins populares, facilitando a criação de estruturas complexas.
Características Principais
-
Criação de CPTs com Interface Visual
Configure tipos de post personalizados com um painel intuitivo e detalhado. -
Gerador de Campos Personalizados
Adicione campos do tipo texto, imagem, booleano, repetidor e mais, com suporte a lógica condicional. -
Gerenciamento de Taxonomias
Crie categorias e tags customizadas para organizar os conteúdos dos CPTs. -
Relacionamentos entre Posts
Vincule posts de diferentes tipos com campos de relacionamento bidirecional. -
Templates e Layouts Customizáveis
Utilize shortcodes e funções para exibir dados dos campos em qualquer parte do site. -
Importação e Exportação
Exporte toda a estrutura criada para migrar ou replicar em outros projetos com facilidade. -
Compatível com Gutenberg, Elementor e mais
Integração fluida com os principais construtores de página.
Benefícios do ACPT
-
Autonomia Total sem Código
Permite criar estruturas avançadas no WordPress sem escrever uma linha de código. -
Flexibilidade para Qualquer Projeto
Ideal para sites com necessidades específicas de conteúdo e organização. -
Escalabilidade e Organização
Facilita a gestão de grandes volumes de conteúdo de forma estruturada e personalizada.
Para Quem é Indicado?
-
Desenvolvedores que desejam agilizar a criação de CPTs e campos personalizados.
-
Agências que precisam montar soluções personalizadas para diferentes clientes.
-
Criadores de conteúdo que buscam organizar melhor suas publicações no painel do WordPress.
O ACPT transforma o painel do WordPress em uma ferramenta poderosa de gestão de conteúdo, entregando uma solução robusta, visual e altamente flexível para projetos sob medida.
Perguntas Frequentes
O plugin ACPT é GPL?
Sim. O ACPT é distribuído sob a licença GPL (GNU General Public License). Você pode usar, modificar e redistribuir legalmente, em quantos sites quiser.
Posso usar o plugin ACPT em mais de um site?
Sim. Você pode instalar o ACPT em quantos sites quiser. Só as atualizações automáticas pelo Ultrapack Auto Updater têm limite: de 3 a 80 sites, conforme o plano.
Quanto custa o plugin ACPT no Ultrapack?
O ACPT sai por R$ 14,90 na compra avulsa, e também está incluído nos planos de assinatura a partir de R$59/mês (VIP I).
O plugin ACPT inclui atualizações?
Sim. A versão atual do ACPT é a 2.1.3, publicada no Ultrapack em 06/10/2026. Assinantes atualizam direto do painel do WordPress com o UAU (Ultrapack Auto Updater).
O plugin ACPT é seguro para baixar e instalar no meu WordPress?
Sim. Cada versão do ACPT passa por varredura de malware (ClamAV e regras YARA, no UltraHub) antes de ser publicada.
Quais são os requisitos do plugin ACPT?
Requer WordPress 6.5 ou superior.
O que mudou nesta versão
Versão 2.1.3 2026-10-06
- Collapsible sidebar in the field builders - the sidebar of every canvas builder (meta fields, forms, custom table columns, dynamic blocks, option pages, WooCommerce product data) can be hidden to a thin strip, from a toolbar button or by dragging its edge, giving the fields the full width on small screens. The choice is remembered per item, and clicking a field reopens the sidebar with its settings.
- Forms stopped sending email with plugins that replace `wp_mail` - since 2.1.0 ACPT loaded WordPress' pluggable functions while plugins were still loading, so plugins that override `wp_mail` (e.g. ActiveCampaign Postmark) could no longer do it and form emails were lost (Ticket #1377).
- Updating installed the previous version - after a release WordPress showed the new version but installed the previous zip, served from a cache. The update package URL now includes the version, so every release gets its own download (Tickets #1354, #1370).
- Custom tables
- The admin crashed when two tables had foreign keys pointing at each other - loading the tables recursed until PHP ran out of memory on every admin page, locking users out of wp-admin. Tables referencing each other, in a pair or a longer chain, now load normally (Ticket #1372).
- Meta fields
- JSON in a Textarea field still lost characters with "Allow HTML" off - spaces and line breaks at the start and end of every JSON string were removed, so values made only of line breaks (common in Etch and Gutenberg exports) were saved empty. The JSON is now saved exactly as typed (Ticket #1370).
- A Relationship value read with `get_acpt_field` couldn't be saved back - it returns the related posts, users or terms as objects, and passing them to `save_acpt_meta_field_value` failed with a PHP error, so nothing was saved. Objects are now saved as their IDs, and removing an item with `unset` works too (Ticket #1371).
- Dynamic blocks
- HTML and line breaks were stripped from a block's Callback and CSS on save - the Twig template lost every tag and was compressed to one line, and the CSS was flattened. Both are now saved as typed; users without the `unfiltered_html` capability (e.g. multisite site admins) get post-safe HTML in the Callback and tag-free CSS (Ticket #1378).
- Field builders on small screens
- Narrow field cards overflowed their border - a field at 50% width, or inside a repeater, pushed its switches and type badge outside the card. Cards now adapt to their real width, hiding the inline switches and then the type badge when there's no room; both stay available in the sidebar (Ticket #1376).
- The sidebar width followed the screen as a percentage - a sidebar made wider on a large monitor took more than half of the builder on a laptop. Its width is now kept in pixels and capped to half of the builder when the page loads (found while auditing Ticket #1376).
- Box and block header icons could fall outside the box, the toolbar's "Sidebar on the right" button was cut off at 1024px, and field names were truncated after 10 characters even when there was room. Headers keep their icons inside, the toolbar switches to compact icons on narrow builders, and names use the available width with the full name on hover (found while auditing Ticket #1376).
- Toggle fields never matched in element conditions on non-English sites - a Toggle was rendered as the translated "True"/"False" (e.g. "Wahr"/"Falsch"), which Bricks conditions don't treat as yes/no, so `{acpt_...} == 1` never matched. Toggles now return `1`/`0` inside element conditions and with the `:value` argument (Ticket #1375).
Versão 2.1.2 2026-09-30
- Meta fields
- Editor fields inside Repeaters lost all formatting on save - since 2.1.0 every sub-field of a Repeater or Flexible Content field was sanitized as plain text, so saving the post stripped the HTML tags and line breaks from Editor sub-fields (and line breaks from Textarea sub-fields). Each sub-field is now sanitized according to its own type; Editor sub-fields keep post-safe HTML (Ticket #1361).
- Select dropdowns were clipped below 1200px window width - the responsive meta-field layout set `overflow: hidden`, which cut off the Selectize popup and made arrow-key navigation look unresponsive. Only horizontal overflow is clipped now (Ticket #1360).
- A saved `0` showed as empty in the admin - since 2.1.1 a required Number field accepts and saves `0`, but on reload the edit screen showed the input empty (Currency, Weight and Length too), because the escaping helper treated `"0"` as empty. A stored `0` is now shown, and a `0` min/max on the admin Number field is respected (Ticket #1354).
- Blank Number, Currency, Weight and Length fields were saved as `0` - leaving the amount empty stored `0`, so the front end showed `0` / `0.00 EUR` instead of nothing. A blank amount now stays blank; an explicit `0` is still saved as `0` (found while investigating Ticket #1355).
- Time field values came back empty when saved in a format other than the site's time format (e.g. `10:00` on a site using `g:i a`), which is what the admin time picker saves when the field's display format differs. `get_acpt_field`, shortcodes and page builder tags returned nothing, including for Time fields inside repeaters. Any supported time format is now accepted (Ticket #1352).
- Bulk Edit wiped ACPT fields - WordPress' Bulk Edit panel submitted every ACPT quick-edit input, including the ones left blank, so any bulk edit (even just enabling comments) emptied those fields on every selected post. Blank Bulk Edit inputs now mean "no change", as they do for WordPress' own fields; this also applies to Custom table columns (Ticket #1369).
- JSON saved in a Textarea field was altered - `%20`-style sequences and tags inside JSON strings were stripped, and with "Allow HTML" enabled the JSON was saved with backslash-escaped quotes and `&`, ` ` encoded, so it was no longer valid JSON. JSON is now kept as typed; tags inside it follow the field's "Allow HTML" setting (Ticket #1370).
- The unit of a blank Currency, Weight or Length field was replaced - when the amount was empty, the edit screen preselected the field's default unit instead of the saved one, so saving the post again overwrote it (Ticket #1355).
- List pagination crashed with "Unexpected Application Error! 404 Not Found" - page 2 and later of the Meta Keys Manager, Datasets and WooCommerce product data lists had no matching route, and the Custom Tables list linked its pages to a non-existent `/tables` path. All four now paginate (Ticket #1363).
- Fatal error with plugins that run the main query early in wp-admin - a custom login URL plugin rendering its 404 page during an admin request triggered `Call to undefined function get_current_screen` in the admin columns code, white-screening the site (Ticket #1368).
- Custom tables
- Advanced column settings were lost on save - on a column saved without any advanced settings, later changes to them (width, before/after text, CSS class, min/max, pattern, ...) were silently dropped on every save, because the empty settings were returned as a JSON array instead of an object (found while investigating Ticket #1363).
- Tables with UNSIGNED or ZEROFILL columns could not be created or synced - the generated SQL put `UNSIGNED`/`ZEROFILL` after `NOT NULL` (and, when syncing an existing table, after `DEFAULT`/`COMMENT` too), e.g. `BIGINT NOT NULL UNSIGNED`, which MySQL and MariaDB reject as a syntax error. Syncing a column with a text default also produced an unterminated `DEFAULT 'value`. Both are fixed (Ticket #1367).
- A column default of `0` was dropped, and decimal defaults were truncated - `0` was treated as "no default" when creating or syncing a table (so `DEFAULT 0` never reached the database), a default like `1.5` was synced as `1`, and a DECIMAL default such as `1` kept showing the table as not synced because the server reports it as `1.00` (found while fixing Ticket #1367).
- No way to set a Currency column's default currency - the record form always preselected USD. Currency columns now have a "Default currency" setting (Ticket #1362). Saved advanced settings are also shown again when a column is reopened.
- Duplicating a column only kept its type - the copy got the column type but none of the settings changed in the sidebar (length, nullable, default value, advanced settings, ...). The duplicate now copies them, with a new name and id; the primary key flag, index/foreign key links and the inverse side of a bidirectional relation are not copied (Ticket #1363).
- Text field tags rendered empty in link settings - an ACPT Text field used as the only content of a Bricks link setting (e.g. an Icon element's custom URL) returned nothing, because Text fields weren't registered for Bricks' `link` context. They now resolve to the bare URL, without the field's before/after text (Ticket #1356).
- Date and Time tags printed the "before" text twice and never the "after" text (found while fixing Ticket #1352).
- Front-end form Number fields still rejected `0` - with no limits configured they were rendered with `min="1" max="100"`, so the browser refused `0` (and anything above 100) even after the 2.1.1 fix, and a minimum set to `0` was ignored. Number fields now have no limits unless configured, and a `0` limit is respected (Ticket #1354, follow-up of #1338).
- Currency, Weight and Length fields rejected `0` - in both front-end forms and the admin, their amount input defaulted to a minimum of `0.01` (Currency) or `1` (admin Weight/Length), and a minimum set to `0` was ignored. They now have no minimum or maximum unless configured, and a `0` limit is respected (Ticket #1354).
- Gutenberg
- Block Bindings: ACPT fields missing from the Site Editor's Attributes panel - the list of bindable fields was computed once and then cached, so switching templates in the Site Editor without a page reload kept the fields of whatever screen it was first computed on (often none, which hides the panel). The list now follows the template being edited. The list could also be computed before ACPT's fields had finished loading and then stay empty for that template even after a reload (more likely on sites with many field groups); it is now only built once the fields are loaded (Ticket #1357).
- WYSIWYG (Editor) fields lost their formatting in ACPT Dynamic Data - lists, bold text and other markup were stripped unless "Enable Raw HTML" was turned on. Editor fields now render their HTML (filtered to post-safe markup) by default, like the `[acpt]` shortcode and the legacy ACPT Meta Fields module (Ticket #1358).
Versão 2.1.1 2026-09-25
- Bug-fix release for issues reported after 2.1.0.
- Meta fields
- Saving a field group failed with "`Value` key is mandatory" - a field option row without a value (e.g. a stale row reaching an Image field) aborted the whole group save. Such rows are now skipped, and a row with a label but no value falls back to its label (Ticket #1349).
- Saving an "All users" / "All comments" location rule fataled - the empty `find` the UI submits for these rule types is now normalised instead of throwing (Ticket #1339).
- Currency / Weight / Length fields fataled the post editor when a default unit was set without a default amount (`explode: Argument #2 must be of type string, array given`) (Ticket #1346).
- Required fields rejected `0` - a required Number field set to `0` failed with "Expected a non-empty value" in the admin and "The field is required" on front-end forms (Ticket #1338).
- Field groups did not show on taxonomies registered by other plugins (e.g. WooCommerce Product categories) - they could be selected as a location but never rendered or saved (Ticket #1337).
- Link fields without link text returned a plain URL string instead of the `{url, label}` array 2.0.x returned, so they rendered empty in Elementor Pro, Bricks, Divi, Oxygen, Yoast, WP Grid Builder and Zion, and an Elementor Pro display condition on them fataled (Ticket #1341).
- Option pages
- Repeater "Add element" did nothing on option pages - the AJAX row generation fataled with a `Strings::toDBFormat` TypeError, affecting every repeater on an option page (Ticket #1333).
- Form submissions bypassed ACPT permissions - field- and column-level permissions are now enforced on submission, and forms writing CCT records require the table's create/update permission (Ticket #1345).
- Gutenberg
- ACPT blocks rendered empty on the front end - the Basic, Repeater and Relational field blocks and all Dynamic Blocks were registered only in editor contexts, so on the front end WordPress never called their render callback (Ticket #1348).
- Basic Fields block showed "Error loading block: [object Object]" in the Site Editor for fields with large settings - the preview request exceeded the server URL limit; it is now sent via POST (Ticket #1322).
- Integrations
- SEOPress: pages crashed when an ACPT field rendered empty or `0` - the SEOPress integration returned `null` from a string-typed method whenever a field value rendered to an empty string or `0`, a fatal error on every page where SEOPress builds its dynamic variables (single posts, archives, and the Breakdance builder preview). It now returns an empty string (Ticket #1335).
- Breakdance/Oxygen 6 native Repeater Field element could white-screen - `ACPTRepeaterField::hasSubFields` left an internal value undefined when a repeater's meta group belonged to something other than a post type, taxonomy, or option page, instead of resolving cleanly to "no rows"; `ACPTField::getValue` and `RawValueConverter::convert` also only guarded against `\Exception`, not every PHP error type, and Breakdance's own dynamic-data render chain has no error handling of its own, so any uncaught error here white-screened the whole page.
- REST API
- `PUT /acpt/v1/meta/{id}` rejected the unchanged output of `GET` - read-only keys returned by GET are now accepted, missing settings (group display/context/priority, box settings) were added to the schema, and updating a field keeps its position (Ticket #1347).
- Miscellaneous
- Address map never loaded when another ACPT script was on the page - seven static scripts overwrote each other's `window.onload`; they now use `addEventListener('load', ...)` (Ticket #1344).
- Caught errors re-crashed the page when ACPT logging was enabled - the `acpt/error` logger only accepted `\Exception`, so an `\Error` caught by ACPT's own safety nets (Breakdance, field-group visibility, location rules...) threw a new fatal from inside the logger. It now accepts any `\Throwable`.
- PHP 8.4 deprecation notices - `OptionPageModel::duplicate` and `MetaBoxModel::__construct` implicitly marked a typed parameter as nullable via a `null` default instead of an explicit `?type`, both deprecated as of PHP 8.4.
Notas de versão publicadas pelo desenvolvedor.
Como instalar
Atualização automática: este item é atualizado pelo Ultrapack Auto Updater. Com ele instalado, a versão nova aparece no seu painel como qualquer outra atualização do WordPress (como configurar).
- Baixe o arquivo
advanced-custom-post-type.zip. - No painel do WordPress, vá em Plugins > Adicionar novo > Enviar plugin.
- Selecione o arquivo
advanced-custom-post-type.zipe clique em Instalar agora. - Clique em Ativar.
Requisitos: Requer WordPress 6.5 ou superior.
Travou em algum passo? Abra um chamado dizendo em qual deles parou.

UAU Ready