- NewspapertagDiv Composer Tutorial
- NewspaperCredit System
- NewspaperCreate a frontend submission form
- NewspaperHow to Use the Tabbed Content shortcode
- NewspaperCreate a form contact page
- NewspaperFilters and sorting for taxonomies
- NewspaperUser review system
- NewspaperModal Popup
- NewspaperFlex Block Settings Guide
- NewspaperSocial Sharing
- NewspaperSingle Post Shortcodes
- NewspaperInfinite Loading for Single Posts
- NewspaperThe Newspaper Mobile Theme: Introduction
- NewspaperHow to Add a Logo in Newspaper
- NewspaperCustom Post Type Support
- NewspaperCloud Library Templates
- NewspaperDesign your Post Pages using the Cloud Library Templates
- NewspaperHeader Builder
- NewspapertagDiv Cloud Library Plugin
- NewspaperAd Box Element and Ads Overview
Hi,
Yes, you can do that. The file that you should copy under the child theme is under this path: wp-content/plugins/td-composer/legacy/Newspaper/single.php. Make sure that you copy both files, single and loop single (the files should be set directly in the child theme, not under \parts\single).
In our guide, we mentioned how to overwrite only the standard pack templates- https://forum.tagdiv.com/the-child-theme-support-tutorial/ that are in a different place.
Hi!
How can I hide the Exclusive Row / Section for categories that will not have exclusive content.
Hello @Calin
I am writing to you after a deep technical audit that lasted two days, conducted by a Senior Infrastructure Engineer and Web Performance Specialist. We had to take this measure because our PageSpeed scores are stuck between 31% and 41% on mobile, despite running on a high-end VPS with persistent cache (Redis/Object Cache) and every possible server-side optimization.
Google has officially notified us regarding this poor performance, stating that our site is no longer a priority in search rankings due to failing Core Web Vitals. After a thorough investigation of the source code and database, we have pinpointed the root cause: The Newspaper theme is loading both Desktop and Mobile assets simultaneously on mobile devices.
Even with dedicated mobile pages (separate IDs), the theme “stacks” the entire desktop framework on top of the mobile one. This redundancy is killing our performance.
I need you to take this diagnostic to the tagDiv development team immediately. We need to know if and when a fix will be released. If this architectural flaw is not resolved, I will be forced to migrate to another theme or develop a custom one, as I cannot afford to lose my SEO ranking due to theme bloat.
Technical Diagnostic:
Problem: Mobile pages heavier than desktop pages
Date: 03/05/2026
Theme: Newspaper 12.7.5
Plugin: td-composer
Server: VPS Ubuntu — CyberPanel — LiteSpeed
CONTEXT
The site glostv.com uses the Newspaper 12.7.5 theme with the td-composer plugin and has a system of separate pages for mobile and desktop, where each version was built individually in the Newspaper visual editor (tagDiv Composer). The site owner reported that pages on mobile are significantly heavier than on desktop, even though there are separate and optimized mobile pages already built.
MOBILE SYSTEM ARCHITECTURE
The following pages were created as mobile templates inside the tagDiv Composer itself and are marked in the database with the flag tdc_is_mobile_template = 1:
ID 7584 — tv ao vivo Brasil (mobile version)
ID 7617 — POPULARES TOP (mobile version)
ID 8700 — Estados (mobile version)
ID 8872 — Homepage (mobile version)
ID 9944 — Política de Privacidade (mobile version)
ID 9948 — Termos de Uso (mobile version)
ID 10581 — Sobre Nós (mobile version)
ID 10597 — Política de Cookies (mobile version)
TECHNICAL PROBLEM IDENTIFIED
Problem 1 — td-composer loads assets WITHOUT any device distinction
Confirmed directly in the file:
wp-content/plugins/td-composer/legacy/common/wp_booster/td_wp_booster_functions.php
Line 362 — Composer JS loads for ALL devices:
add_action(‘wp_enqueue_scripts’, ‘load_js_composer_front’, 1000);
Line 430 — Full Newspaper CSS loads for ALL devices:
add_action(‘wp_enqueue_scripts’, ‘load_front_css’, 1001);
Line 744 — Full theme JS loads for ALL devices:
add_action(‘wp_enqueue_scripts’, ‘load_front_js’);
None of these functions have any device check. They load for both desktop and mobile equally, without any condition whatsoever.
Problem 2 — The mobile engine loads ON TOP of the desktop engine
Confirmed in the file:
wp-content/plugins/td-composer/mobile/functions.php
Line 149 — Mobile CSS loads ON TOP of the desktop CSS already loaded:
add_action(‘wp_enqueue_scripts’, ‘tdm_load_front_css’);
Line 173 — Mobile JS loads ON TOP of the desktop JS already loaded:
add_action(‘wp_enqueue_scripts’, ‘load_front_js’);
Line 184 — Mobile specific script loads ON TOP of all previous ones:
wp_enqueue_script(‘td-site’, TDC_URL.’/mobile/js/tagdiv_theme.min.js’);
Problem 3 — The flag tdc_is_mobile_template does NOT remove desktop assets
Confirmed in the file:
wp-content/plugins/td-composer/includes/tdc_state.php
Line 42:
private static $is_mobile_template = false;
Line 202:
public static function set_is_mobile_template($is_mobile_template) {
self::$is_mobile_template = $is_mobile_template;
}
This flag only serves to let the visual editor know it is on a mobile page. It does not execute any removal of desktop CSS or JS. It is purely an internal state variable with no effect on asset loading.
Problem 4 — Proof: Zero wp_dequeue for mobile anywhere in td-composer
I ran the following command directly on the server via terminal:
grep -r “wp_dequeue|deregister” wp-content/plugins/td-composer/ -n | grep -i “mobile|desktop|css|js”
The only result found was the removal of Visual Composer scripts in the backend administrative editor, not in the frontend. Throughout the entire td-composer codebase, there is not a single wp_dequeue_style() or wp_dequeue_script() instruction conditioned on mobile device detection in the frontend.
WHAT THE MOBILE BROWSER IS ACTUALLY DOWNLOADING
When a user accesses the site from a mobile device, the browser downloads all of this before rendering the mobile page:
From the desktop engine (which should NOT load on mobile):
Full legacy CSS of Newspaper
td-composer frontend JS (desktop visual engine)
tagdiv_theme.min.js desktop version
td-cloud-library CSS
td-standard-pack CSS
td-multi-purpose/style.css
Desktop version fonts
From the mobile engine (which loads ON TOP of the desktop):
Newspaper mobile CSS
tagdiv_theme.min.js mobile version
Mobile specific scripts
Fonts loaded again
The mobile browser is downloading the complete Newspaper framework twice. Once for the desktop layout that is discarded and once for the mobile layout that is actually used. This directly explains why mobile pages feel heavier and slower than desktop pages. DIRECT QUESTION TO SUPPORT
Does td-composer 12.7.5 have any native mechanism to remove desktop engine assets—specifically the functions load_front_css, load_js_composer_front, and load_front_js located in td_wp_booster_functions.php—when the page being served is already marked with tdc_is_mobile_template = 1 in the database?
If yes, in which file and on which line does this asset cleanup occur?
If no, when is the development team going to release an update to fix this? It is unacceptable that a high-end theme like Newspaper forces a mobile device to download the entire desktop framework AND the mobile framework simultaneously. My server-side analysis confirms that even when using dedicated mobile pages, the theme simply “stacks” assets instead of “swapping” them.
This redundancy is causing a massive performance overhead and killing our Core Web Vitals. We have separate pages for a reason, and the theme should NOT be loading desktop junk on a mobile-dedicated template. We need a clear position on when this will be resolved so that tdc_is_mobile_template = 1 actually triggers a wp_dequeue of unnecessary desktop resources.
Hello, my anti malvare plugin says that there is a vunlerability in wp-content/plugins/td-composer/css-live/includes/td_live_css_ajax.php
I updated it to the newest version 5.4.4, but it shows, that the vunlerability is still there… When would this be fixed?
Best regards,
Rafał.
thanks for your reply, I already use a code in template_redirect action in funcitons.php, see below, to remove some sections and automated pages that I don’t need anymore on a specific site.ho provato ad incollare il codice ma wordfence non mi lascia inviare il messaggio. I tried pasting the code, but Wordfence won’t let me send the message. Basically, I’m using a wp_die with a 410 response, and it works, but I’d like to include a design that’s more similar to the site pages created with TD Composer, Cloud Template or modules.
You should ask an AI app to review the weather widget for issues. I asked the following question in Cursor AI:
Are the units used correctly? When I check the data returned from the API call, it doesn’t match up with the data on https://openweathermap.org/ for the same city.
I received the following response:
I’m going to verify the unit handling logic in your weather class against OpenWeather response fields so we can isolate exactly why values differ.
—
Short answer: not fully — there are two real unit bugs in this file.
What’s wrong
w_units handling is incorrect
Any non-empty w_units value is treated as imperial:
td_weather.php
Lines 41-48
$current_unit = 0; // 0 – metric
$current_temp_label = ‘C’;
$current_speed_label = ‘kmh’;
if (!empty($atts[‘w_units’])) {
$current_unit = 1; // imperial
$current_temp_label = ‘F’;
$current_speed_label = ‘mph’;
}
So w_units=”metric” still flips to imperial.
That explains mismatch immediately.
Metric wind label/value mismatch
API requests units=metric, where wind speed is m/s, but code labels it as kmh without converting:
td_weather.php
Lines 428-431
if (isset($api_response[‘wind’][‘speed’])) {
$weather_data[‘today_wind_speed’][0] = round($api_response[‘wind’][‘speed’], 1);
$weather_data[‘today_wind_speed’][1] = self::kmph_to_mph($api_response[‘wind’][‘speed’]);
}
today_wind_speed[0] is m/s, not kmh.
today_wind_speed[1] also assumes km/h input, but input is m/s.
Where to fix
In wp-content/plugins/td-composer/legacy/common/wp_booster/td_weather.php:
Fix unit selection around the if (!empty($atts[‘w_units’])) block.
Fix wind conversions in owm_get_today_data() around wind speed assignment.
—
Then I asked the following:
Can you show me the exact fixes I need to make in order to correct this issue?
—
Yes — make these exact edits in wp-content/plugins/td-composer/legacy/common/wp_booster/td_weather.php.
1) Fix w_units detection (currently always imperial when non-empty)
Replace this block:
$current_unit = 0; // 0 – metric
$current_temp_label = ‘C’;
$current_speed_label = ‘kmh’;
if (!empty($atts[‘w_units’])) {
$current_unit = 1; // imperial
$current_temp_label = ‘F’;
$current_speed_label = ‘mph’;
}
with:
$current_unit = 0; // 0 – metric
$current_temp_label = ‘C’;
$current_speed_label = ‘m/s’;
if (!empty($atts[‘w_units’]) && strtolower($atts[‘w_units’]) === ‘imperial’) {
$current_unit = 1; // imperial
$current_temp_label = ‘F’;
$current_speed_label = ‘mph’;
}
2) Fix wind speed conversion (OpenWeather metric wind is m/s, not kmh)
In owm_get_today_data(), replace:
if (isset($api_response[‘wind’][‘speed’])) {
$weather_data[‘today_wind_speed’][0] = round($api_response[‘wind’][‘speed’], 1);
$weather_data[‘today_wind_speed’][1] = self::kmph_to_mph($api_response[‘wind’][‘speed’]);
}
with:
if (isset($api_response[‘wind’][‘speed’])) {
$weather_data[‘today_wind_speed’][0] = round($api_response[‘wind’][‘speed’], 1); // m/s from api
$weather_data[‘today_wind_speed’][1] = self::mps_to_mph($api_response[‘wind’][‘speed’]); // imperial
}
3) Add proper conversion helper (m/s -> mph)
Replace this function:
private static function kmph_to_mph($kmph)
{
return round($kmph * 0.621371192, 1);
}
with:
private static function mps_to_mph($mps)
{
return round($mps * 2.2369362921, 1);
}
Why this fixes your mismatch
w_units=”metric” will now stay metric (instead of being treated as imperial).
Wind values/labels now match OpenWeather metric/imperial behavior.
If you want, I can apply these edits directly for you now.
—
I followed those instructions and now the weather widget is displaying more realistic data to me.
UPDATE — April 25, 2026
Significant new findings after deeper DOM inspection. The block is no longer empty, but articles are rendered offscreen.
What changed since my last report:
Yesterday: the block container appeared completely empty — no child modules in the DOM.
Today (verified via browser DevTools): the container #tdi_96 now contains 5 .td_module_flex elements with correct titles, dates, categories, and links pointing to the right posts.
However, the articles are rendered at top: -4729px on the public frontend — far outside the viewport, which is why they remain invisible to users despite being present in the DOM.
Detailed observations from the frontend (incognito, logged out):
Articles ARE in the DOM: confirmed via document.querySelectorAll(‘#tdi_96 .td_module_flex’) returning 5 elements with valid content.
Articles positioned offscreen: getBoundingClientRect() returns top: -4729, left: 20 for the first article. Parent #tdi_96 itself sits at normal page position with height: 234px.
Computed CSS does not explain the offset: position: relative, top: 0px, marginTop: 0px, transform: none, translate: none, inset: 0px — no positioning rule should push the elements offscreen.
No transform on any ancestor: walked up the DOM from .td_module_flex to #tdi_96 — no element has a transform or non-default position.
In tagDiv Composer editor, the block displays correctly — all 5 articles visible with normal layout. The issue manifests only on the public frontend rendering.
Block class on frontend: td_block_inner td-mc1-wrap with el_class=”td-week-slider” set in shortcode.
Image container has display: none (intentional — image_floated=”hidden” in config).
Editor still throws 8x “model does not match content” errors when opening the Homepage in tdc. These persist from yesterday and have not cleared.
Hypothesis:
The block appears to enter a ticker/slider rendering mode on the frontend (consistent with the td-week-slider class), where articles are positioned offscreen waiting for a JS animation that never executes. The editor renders the block correctly because it bypasses this ticker behavior, but the frontend runtime applies it and fails. This may be linked to the persistent “model does not match content” errors.
Concrete questions:
(a) How can I force this block to render as a standard vertical flex list (no ticker behavior) without entering Composer to edit it (since opening the Homepage in tdc shows the model errors)?
(b) Is there a way to clear the model-content mismatch from the database directly (wp_options, wp_postmeta) without going through the editor?
(c) Does the td-week-slider el_class trigger specific JS that could fail silently and leave articles parked offscreen?
I can provide additional diagnostic output from DevTools console if helpful.
Hi tagDiv team,
I have a Flex Block 1 (configured as “Latest news” widget in the homepage left column)
that renders empty in the frontend but displays posts correctly in the Composer editor preview.
DETAILS:
– Theme: Newspaper v12.7.5 (REGISTERED)
– Demo installed: Newsweek PRO
– Site: https://eurowaypoint.com
– WordPress: 6.9.4
– PHP: 8.2.30
THE PROBLEM:
– In Composer editor: the Flex Block 1 shows the latest 5 published posts correctly
– In frontend (incognito browser, logged out): the block container is generated
(div id=”tdi_96″ class=”td_block_inner td-mc1-wrap”) but completely empty —
no child modules are rendered inside
– 24 published posts exist in the database
– Other blocks on the same homepage (Big Grid Flex 1, other Flex Block 1 instances)
work correctly and display posts
– No JavaScript errors in browser Console
– The block has no special filters configured (Category: All, all filter fields empty)
WHAT I’VE ALREADY TRIED:
– Cleared all caches (SiteGround, WP Super Cache disabled, browser hard reload)
– Restored Homepage from a 3-day-old revision (no improvement)
– Disabled all third-party plugins one by one (Wordfence, SG Optimizer, etc.)
– Verified block configuration in Composer (Filter tab, Layout tab — all default/empty)
– Forced re-save of the block (changed limit number and saved)
– Removed custom CSS that contained :has() selectors
WHAT I NOTICED:
The block was working until I made some modifications today (changed page slug from
/plans/ to /newsletter/, edited some HTML custom blocks for Subscribe links).
The Latest block stopped rendering at some point during these changes.
Restoring an older Homepage revision did NOT fix it.
Could this be a corrupted block state in the database? Is there a way to reset
the block’s internal cache or regenerate its configuration?
Thank you for your help.
Hi, I added a new footer design using a footer templates, but I’m having some issues. The new footer is visible when previewing, but when I edit its content using Td Composer, I don’t see the footer content or any elements within Td Composer. Furthermore, the footer is not visible on the website’s front end and doesn’t appear on the website itself.
https://drive.google.com/file/d/1tBP8O-lk7_uPV1qfstIY3NUi0ZQt1dXx/view?usp=drive_link
Hi,
Unfortunately, those edits must be changed in the theme plugin file and should be done after each theme update because that thumbnail size doesn’t exist. To edit it you need to edit the file wp-content/plugins/td-composer/legacy/Newspaper/includes/td_config.php, look for the td_api_thumb::add(‘td_300x0’, https://prnt.sc/KNli1gH4SIx1 code line around 1491 and change the width from 300 to 400. After that, you need to set the thumb on the blocks small – https://prnt.sc/A-XkfODxUiLO and use a regenerate plugin to regenerate the thumbs.
I hope thsi will help you!
Hello,
Thank you for your previous help. I need assistance with two issues in the Newspaper theme / TagDiv Composer.
1. Google Fonts and local fonts
The theme is loading fonts from Google, and this is heavily affecting the site’s performance because of render-blocking requests. The theme does not properly use local fonts by default.
I tried using local fonts inside TagDiv Composer, but I had to do a workaround, and that is not the correct solution. I also created a Newspaper-child theme and managed to load local fonts from there, but the result was not good because the fonts do not look exactly the same as the original Google Fonts.
What I need is a proper solution that makes the theme use local fonts, while still allowing me to select the fonts normally in TagDiv Composer. In other words, I want the theme to keep the same visual appearance, but load the font files locally instead of requesting them from Google.
What is the correct way to do this?
2. Hiding the “Most Watched” section title
I am trying to hide the title of the “Most Watched” section shown here:
https://ibb.co/6cmh3VH8
This section appears in this post:
https://glostv.com/tv-ao-vivo/tv-cultura
and also in all other posts.
I used the following CSS:
CSS
.tdi_54 .entry-title,
.tdi_54 .td-module-title,
.tdi_54 .td-module-title a {
display: none !important;
}
The problem is that this is also hiding titles on the Popular page:
https://glostv.com/populares
This should not happen. These elements should not be sharing the same .tdi_54 behavior for this case, or at least I need a more specific way to target only the “Most Watched” section inside posts.
How can I hide that title only in the post section, without affecting the Popular page?
Thank you.
Ok Calin,
a last question: opening with the TD Composer my Pre-designed Templates (Default PRO) of the Cloud Library, i don’t see graphically a line of code (CSS code) that i see in other Pre-designed Templates (for example, Default RTL PRO): this apparent lack of code (CSS code) in my templates is a problem? Or i see the line of code (CSS code) in other templates because are different templates than mine?
Thank you!
development.diariojudio.com
I am not being able to insert shortcodesnor text via Wp Editor
Column Content and Inline Text: Shortcodes are not executed
Column text and Text with title; Entered text is not returned from the editor to the column spot
Doing F12, I see this error: VM378:52
Uncaught ReferenceError: tdcDebug is not defined
I’have been using Newspaper template with TD Cloud Library since January but the last monthh i’m getting errors when i try to modify the cloud templates i’ve created.
I’m always getting the error “Error at rows: 1(models) : 2(dom). The model does not match the content Current state has involved an issue. You could try an UNDO operation (CTRL+Z / CTRL+SHIFT+Z)”
I’ve tried everything but the error continues appearing. It appears also when i create a new blank template from cloud library and try to edit with Tag Div Composer.
I have the same instalation on a local server but the error doesn’t appear.
Any suggestions?
Thank you.
Hello,
i just imported the Pre-designed Templates for my Newspaper theme (Default PRO) from the Cloud Library and i noticed a difference between the “Default PRO” and “Default RTL PRO” templates (header, footer, etc.): opening the templates with the TD Composer, the “Default RTL PRO” templates displays a line of code (CSS code), while the “Default PRO” templates don’t. To properly use my theme’s original template (“Default PRO”), which of the two templates do you recommend? Could the lack of code (CSS code) in the “Default PRO” templates be a problem? (I’ve always noticed problems with my site’s indexing)
Thanks a lot!
Hi everyone,
I’ve been using Newspaper for a few years now. Back when I was running everything with pure PHP templates, I noticed the CPT/Taxonomies section in Cloud Templates would get stuck on an infinite loading spinner — but since I wasn’t using Cloud Templates at the time, I just ignored it.
Now that I’ve fully migrated my site to Cloud Templates, this issue has become a blocker. Here’s what’s happening:
The problem:
When I disable the Standard Pack plugin (which is the expected workflow when fully migrating to Cloud Templates), the CPT/Taxonomies panel in Cloud Templates gets stuck on an infinite loading spinner and never loads.
Root cause I identified:
After investigating the PHP error logs and source files, I found that all td_block_* shortcode components (td_block_1 through td_block_25+) are registered exclusively inside the td-standard-pack plugin. When Standard Pack is deactivated, the td-composer plugin throws the following errors for every single block:
wp_booster error: td_api_base::mark_used_on_page : a component with the ID: td_block_1 is not set.
This happens in:
/wp-content/plugins/td-composer/legacy/common/wp_booster/td_api.php
Hi,
In this situation, you’ll need to edit the theme files, for example;
wp-content/plugins/td-composer/legacy/Newspaper/header.php
if tagDiv Standard Pack plugin is in used, you need to edit the
wp-content/plugins/td-standard-pack/Newspaper/header.php
Hello. There are two security vulnerabilities in tagDiv Composer versions <= 5.4.3
When will these security vulnerabilities be fixed?
Thank you
George
Hi,
This option can be configured for individual blocks and grids using tagDiv Composer:
https://prnt.sc/ktDPdXsOdwJd
Alternatively, you can set it globally from the Theme Panel: https://prnt.sc/MAPzgYe2os2a
You can also add an image/banner there, which will be displayed under the videos shown in blocks with popup enabled: https://prnt.sc/dVyhsT_a617L
Hello,
After some time using the plugin “3d-flip-book” with no problem, the “3d-flip-book” stoped displaying the books. Setting the wordpress in debug mode I get these errors:
Warning: Illegal string offset “3d-flip-book” in /home/cinemame/public_html/new/wp-content/plugins/td-composer/legacy/common/wp_booster/td_util.php on line 949
Warning: Illegal string offset “3d-flip-book” in /home/cinemame/public_html/new/wp-content/plugins/td-composer/legacy/common/wp_booster/td_util.php on line 949
Warning: Illegal string offset “3d-flip-book” in /home/cinemame/public_html/new/wp-content/plugins/td-cloud-library/includes/tdb_functions.php on line 392
Is there something I can do to resolve this errors?
Best regards
Good day, we can not load the composer.
Uncaught SyntaxError: JSON.parse: unterminated string at line 1 column 5430 of the JSON data
‹anonymous>
‹anonymous>
https://die-wirtschaft.ch/wp-content/plugins/td-composer/assets/js/js_files_for_wrapper.min.js?ver=0a9c42ac7caaacdeae8b29810ea4175f:44
https://die-wirtschaft.ch/wp-content/plugins/td-composer/assets/js/js_files_for_wrapper.min.js?ver=0a9c42ac7caaacdeae8b29810ea4175f:45
this is in the “tagDiv Composer” plugin
Can you send me file to fix or debug the Theme?
Hi,
Ok, I see that you have the default shortcodes from theh woo plugins and not the shortcode from tagDiv Composer, therefore, those are coming with a custom css that has the width set on 1400px instead of 1200px – https://i.imgur.com/e9hNz8a.png
Now the simplest and fastest solution in this case is a stronger css like this one:
body .td-pb-span12 .alignwide {
width: 1200px;
}
This css should be set in the theme panel > custom code > custom css.
I hope this will help you!
Hello,
I’m wondering if someone can help. In my TD composer I have a block, “Block 1” which is built of two columns. Left column is Module 4, a query showing a single article. Right column has four queries (single posts) of Module 6. Module 4 shows the comment count, the Module 6 posts do not. In global options (Theme panel –> Block settings –> Meta info for Modules/Blocks), comment count is turned on. Is there a way to add it to the Module 6 divs in that block?
Thanks!
URL: mexiconewsdaily.com
For example: see “MND_Business” category section on the homepage.
Hi,
I will try to explain it better this time.
You need to use tagDiv Composer, edit the homepage and select the blocks where you want to disable the clicks and add the class “disable-click” in the general tab in extra class – https://i.imgur.com/Fimm5LS.png, then based on the above code you used repalce it with this one:
body .disable-click .td-image-wrap {
pointer-events: none;
}
or
body .disable-click .td-module-container,
body .disable-click .td_module_wrap {
pointer-events: none;
}
Did you install TD Composer plugin and activate it? Works up to PHP 8.3 without issue 🙂
(I don’t work here.)