{"id":321587,"date":"2026-06-18T13:47:45","date_gmt":"2026-06-18T13:47:45","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wn-ad-engine\/"},"modified":"2026-09-17T15:26:12","modified_gmt":"2026-09-17T15:26:12","slug":"winup-ad-engine","status":"publish","type":"plugin","link":"https:\/\/am.wordpress.org\/plugins\/winup-ad-engine\/","author":23405959,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Ad Engine - Gerenciador de Adx, Adsense e AdManager","header_author":"Winup Network","header_description":"Ad placement engine for publishers. Insert ads anywhere on your WordPress site.","assets_banners_color":"","last_updated":"2026-09-17 15:26:12","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/winup.network\/plugins","header_author_uri":"https:\/\/winup.network","rating":5,"author_block_rating":0,"active_installs":60,"downloads":523,"num_ratings":4,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"winupsites","date":"2026-06-18 14:27:10","revision":3577334},"1.1.0":{"tag":"1.1.0","author":"winupsites","date":"2026-06-29 13:22:21","revision":3590147},"1.2.0":{"tag":"1.2.0","author":"winupsites","date":"2026-09-08 12:31:36","revision":3686606},"1.2.1":{"tag":"1.2.1","author":"winupsites","date":"2026-09-08 15:21:58","revision":3686909},"1.3.0":{"tag":"1.3.0","author":"winupsites","date":"2026-09-17 15:26:12","revision":3700517}},"upgrade_notice":{"1.3.0":"<p>Recommended update: ads.txt is now written physically at the domain root with automatic virtual fallback, and a pre-existing file is imported instead of overwritten. Adds a change history showing who changed what, WP-CLI ads-txt commands, and code editor fixes.<\/p>","1.2.1":"<p>Recommended update: fixes the <code>slot<\/code> attribute (and related attributes) on the `` tag being stripped on save, which prevented targeting a specific GAM slot.<\/p>","1.2.0":"<p>Plugin renamed to Ad Engine - Gerenciador de Adx, Adsense e AdManager. Recommended update: adds export\/import of block configuration and syntax highlighting, and fixes ad code being stripped on save (`` tag) and missing injection on themes that render content outside the main loop.<\/p>","1.1.0":"<p>Recommended update: fixes ad  sanitization, resolves GPT duplicate-slot errors on lazy-loaded blocks, and adds a per-page block status indicator in the admin bar.<\/p>","1.0.5":"<p>Recommended update with security improvements, compliance fixes and plugin rename.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":4},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3583238,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5","1.1.0","1.2.0","1.2.1","1.3.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[14176,4437,321,377,12651],"plugin_category":[35],"plugin_contributors":[267708,267709],"plugin_business_model":[],"class_list":["post-321587","plugin","type-plugin","status-publish","hentry","plugin_tags-ad-engine","plugin_tags-ad-inserter","plugin_tags-ads","plugin_tags-monetization","plugin_tags-publishers","plugin_category-advertising","plugin_contributors-winup","plugin_contributors-winupsites","plugin_committers-winupsites"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/winup-ad-engine\/assets\/icon-256x256.png?rev=3583238","icon_2x":"https:\/\/ps.w.org\/winup-ad-engine\/assets\/icon-256x256.png?rev=3583238","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Ad Engine - Gerenciador de Adx, Adsense e AdManager<\/strong> is a powerful ad placement tool for WordPress publishers. Configure up to 16 independent ad blocks and insert them anywhere on your site \u2014 before or after content, between paragraphs, in the header, footer, sidebar, or via shortcode.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>16 independently configurable ad blocks<\/li>\n<li>Insert ads anywhere: before\/after content, between paragraphs, header, footer, shortcode, widgets<\/li>\n<li>Filters by post type, categories and tags<\/li>\n<li>Device detection (desktop, mobile, tablet)<\/li>\n<li>Scheduling by day of the week and time<\/li>\n<li>Request count per block<\/li>\n<li>Native Lazy Loading with IntersectionObserver<\/li>\n<li>Shortcode <code>[winup_ad id=\"1\"]<\/code> for manual placement<\/li>\n<li>Sidebar widget<\/li>\n<li>Export and import block configuration as JSON<\/li>\n<li>Syntax highlighting in the code editors<\/li>\n<li><code>ads.txt<\/code> written physically at the domain root (via WP_Filesystem), with a virtual PHP-served fallback when physical writing isn't possible<\/li>\n<li>Change history showing who changed each block, setting or ads.txt, and where the change came from<\/li>\n<\/ul>\n\n<h4>Coming soon<\/h4>\n\n<ul>\n<li>Ad Engine - Gerenciador de Adx, Adsense e AdManager Pro \u2014 advanced metrics, per-block reports, estimated RPM and performance charts<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>winup-ad-engine<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>Go to <strong>Ad Engine - Gerenciador de Adx, Adsense e AdManager<\/strong> in the WordPress admin sidebar<\/li>\n<li>Configure your ad blocks<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20many%20blocks%20can%20i%20configure%3F\"><h3>How many blocks can I configure?<\/h3><\/dt>\n<dd><p>16 independent blocks, each with its own settings for position, device, scheduling and more.<\/p><\/dd>\n<dt id=\"does%20the%20shortcode%20work%20anywhere%3F\"><h3>Does the shortcode work anywhere?<\/h3><\/dt>\n<dd><p>Yes. Use <code>[winup_ad id=\"X\"]<\/code> (where X is the block number from 1 to 16) in posts, pages or any area that supports shortcodes.<\/p><\/dd>\n<dt id=\"can%20i%20copy%20the%20configuration%20from%20one%20site%20to%20another%3F\"><h3>Can I copy the configuration from one site to another?<\/h3><\/dt>\n<dd><p>Yes. Use the export button to download a JSON file with the block configuration, then import it on the destination site. Import offers two modes: merge (only replaces blocks that have content in the file) and replace all.<\/p><\/dd>\n<dt id=\"how%20is%20ads.txt%20served%2C%20and%20what%20happens%20if%20i%20deactivate%20the%20plugin%3F\"><h3>How is ads.txt served, and what happens if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Whenever your server allows direct file writes, Ad Engine writes <code>ads.txt<\/code> physically at your domain root (using WP_Filesystem), where ad networks expect to find it at <code>https:\/\/yourdomain.com\/ads.txt<\/code>. If direct writes aren't possible (subdirectory installs, path-based multisite networks, read-only filesystems), it serves the same content virtually through PHP, so ads.txt keeps working either way. <strong>Deactivating or uninstalling the plugin does not delete the physical <code>ads.txt<\/code> file<\/strong> \u2014 removing it automatically would immediately break every ad network relying on it, so the file is left in place; delete it manually if you no longer want it. Uninstalling removes only the change history table.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Novo: o <code>ads.txt<\/code> passa a ser gravado fisicamente na raiz do dom\u00ednio (via WP_Filesystem), com modo virtual (PHP) como fallback autom\u00e1tico quando a escrita f\u00edsica n\u00e3o \u00e9 poss\u00edvel (instala\u00e7\u00e3o em subdiret\u00f3rio, multisite por subdiret\u00f3rio, permiss\u00e3o de arquivo).<\/li>\n<li>Novo: na ativa\u00e7\u00e3o, um <code>ads.txt<\/code> f\u00edsico preexistente \u00e9 importado para o editor, com backup do arquivo original. Se o conte\u00fado divergir do que j\u00e1 estava salvo, o plugin pergunta qual vers\u00e3o manter, sem sobrescrever nenhuma.<\/li>\n<li>Novo: detec\u00e7\u00e3o de altera\u00e7\u00e3o do <code>ads.txt<\/code> feita fora do plugin (FTP, deploy), com a mesma op\u00e7\u00e3o de escolher qual vers\u00e3o manter.<\/li>\n<li>Novo: indicador na aba ADS.TXT mostrando se o arquivo \u00e9 servido fisicamente ou em modo virtual, com o motivo quando aplic\u00e1vel.<\/li>\n<li>Novo: hist\u00f3rico de modifica\u00e7\u00f5es no painel, registrando qual usu\u00e1rio alterou cada bloco, configura\u00e7\u00e3o ou <code>ads.txt<\/code> e a origem da mudan\u00e7a (painel, importa\u00e7\u00e3o, WP-CLI ou sistema).<\/li>\n<li>Novo: os campos \"Exibir apenas em\" e \"Ocultar em\" aceitam o ID do post ou da p\u00e1gina, al\u00e9m do slug, na mesma lista separada por v\u00edrgula.<\/li>\n<li>Novo: \u00edcone de ajuda nos campos de exibi\u00e7\u00e3o por p\u00e1gina, com instru\u00e7\u00f5es de uso.<\/li>\n<li>Novo: comandos WP-CLI <code>wp winup ads-txt status|sync|import<\/code>.<\/li>\n<li>Corre\u00e7\u00e3o: edi\u00e7\u00f5es do <code>ads.txt<\/code> feitas no painel n\u00e3o apareciam em \/ads.txt quando havia um arquivo f\u00edsico no servidor.<\/li>\n<li>Corre\u00e7\u00e3o: \/ads.txt continua respondendo mesmo se o arquivo f\u00edsico for removido por FTP, restore ou deploy.<\/li>\n<li>Corre\u00e7\u00e3o: a importa\u00e7\u00e3o de blocos (JSON) agora tamb\u00e9m atualiza o arquivo <code>ads.txt<\/code> f\u00edsico.<\/li>\n<li>Corre\u00e7\u00e3o: a resposta virtual do <code>ads.txt<\/code> usava <code>wp_kses_post()<\/code>, que escapava indevidamente <code>&amp;<\/code> e <code>&lt;<\/code> numa resposta <code>text\/plain<\/code>; o cache foi reduzido para 5 minutos, com revalida\u00e7\u00e3o por ETag.<\/li>\n<li>Corre\u00e7\u00e3o: a barra de rolagem dos editores de c\u00f3digo n\u00e3o respondia ao arrastar nem \u00e0 roda do mouse.<\/li>\n<li>Corre\u00e7\u00e3o: o card do m\u00f3dulo no painel mostrava a vers\u00e3o 1.0.0 em vez da vers\u00e3o instalada.<\/li>\n<li>Corre\u00e7\u00e3o: a logo da Winup aparecia incompleta (\"Win\") no cabe\u00e7alho do painel.<\/li>\n<li>Corre\u00e7\u00e3o: \"home\" n\u00e3o funcionava nos campos de exibi\u00e7\u00e3o por p\u00e1gina quando a p\u00e1gina inicial do site era uma p\u00e1gina est\u00e1tica.<\/li>\n<li>Ajuste: destaque de colchetes correspondentes no editor de c\u00f3digo sem sublinhado, para melhor leitura.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Corre\u00e7\u00e3o: o atributo <code>slot<\/code> da tag <code>&lt;winupads&gt;<\/code> (e os atributos relacionados <code>sizes<\/code>, <code>refresh<\/code>, <code>priority<\/code> e <code>collapse<\/code>) n\u00e3o \u00e9 mais descartado ao salvar o bloco \u2014 permite segmentar um slot espec\u00edfico do GAM.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Ajuste: plugin renomeado para Ad Engine - Gerenciador de Adx, Adsense e AdManager.<\/li>\n<li>Novo: syntax highlighting (CodeMirror) nos editores de c\u00f3digo dos blocos e das configura\u00e7\u00f5es globais.<\/li>\n<li>Novo: exporta\u00e7\u00e3o e importa\u00e7\u00e3o da configura\u00e7\u00e3o dos blocos em JSON, com modos de mesclagem e substitui\u00e7\u00e3o total.<\/li>\n<li>Corre\u00e7\u00e3o: c\u00f3digo de an\u00fancio com a tag <code>&lt;winupads&gt;<\/code> n\u00e3o \u00e9 mais descartado ao salvar o bloco.<\/li>\n<li>Corre\u00e7\u00e3o: os blocos passam a ser injetados tamb\u00e9m em temas\/page builders que aplicam o filtro <code>the_content<\/code> fora do loop principal.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Corre\u00e7\u00e3o: c\u00f3digo de an\u00fancio com  (Google Publisher Tag\/AdSense) n\u00e3o \u00e9 mais removido na sanitiza\u00e7\u00e3o.<\/li>\n<li>Corre\u00e7\u00e3o: erro \"div j\u00e1 associado a outro slot\" do GPT em blocos com lazy-load (script deixou de ser executado em duplicidade).<\/li>\n<li>Novo: indicador na barra de administra\u00e7\u00e3o mostrando os blocos ativos na p\u00e1gina atual.<\/li>\n<li>Ajuste: nome do menu na barra lateral encurtado para \"Winup Ad Engine\".<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Plugin renamed to Winup Ad Engine - Gerenciador de Adx e Ads.<\/li>\n<li>Compliance fixes: plugin headers updated, version synced.<\/li>\n<li>Security improvements: additional escaping in admin templates.<\/li>\n<li>Updated readme.txt for WordPress.org directory compliance.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Internal improvements and bug fixes.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Internal improvements and bug fixes.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Internal improvements and bug fixes.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Internal improvements and bug fixes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with full Winup Ad Engine - Gerenciador de Adx e Ads module.<\/li>\n<\/ul>","raw_excerpt":"Ad placement engine for publishers. Insert ads anywhere on your WordPress site.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/321587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=321587"}],"author":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/winupsites"}],"wp:attachment":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=321587"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=321587"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=321587"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=321587"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=321587"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=321587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}