[Resuelto] A field that contains a script will not display unless you are logged in
This support ticket is created hace 5 años, 3 meses. There's a good chance that you are reading advice that it now obsolete.
This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.
Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.
Hoy no hay técnicos de soporte disponibles en el foro Juego de herramientas. Siéntase libre de enviar sus tiques y les daremos trámite tan pronto como estemos disponibles en línea. Gracias por su comprensión.
When I'm logged in to admin and I view the post on the frontend the banner is displayed as expected.
When I'm not logged in and I view the post the banner is not displayed. There is no code being shown.
If I change the field value to some text it does display on the frontend, it's just the code that doesn't get rendered.
I've also tried it with a single line field and the same thing happens.
Link to a page where the issue can be seen: enlace oculto
Just below the "Ratings" section is a grey bar where the banner should appear.
It seems to be a problem with the script you are calling rather than with the Types custom field.
I set up a local test to confirm that script tags work okay inside a multiline field whether logged in or not (with a simple text alert) and it did.
So, following your example, I added a slightly more complex case where I was src-ing an external script, but I got the same result.
I linked to some random library available on a CDN and used it and it worked whether logged-in as an admin or visiting the page as a guest.
Concretely, this is what I added to my multiline text field:
<script type="text/javascript" src="<em><u>enlace oculto</u></em>"></script>
<script type="text/javascript">
adblockDetect( function(adblockDetected) {
if (adblockDetected) {
console.log('Ad blocker is detected');
} else {
console.log('Ad blocker is not detected');
}
}, {
testInterval: 40,
testRuns: 5
}
);
</script>
The first script tag pulls in an external script, the second script tag uses it, sending messages to the console.
And it worked, as I say, in either scenario.
So the problem appears to be particular to your script.
I suggest you try to reproduce my test to confirm the same. If you get different results then we'd need to try testing for conflicts with other plugins or your theme, etc.
Thanks for testing. I think it's nothing to do with Toolset now, so sorry to have taken up your time. I believe it's the caching plugin causing the problem.