mm ik weet het niet zeker aangezien ik nooit op deze manier werk (met RunPHP etc) maar zet eens de volgende code onder de loop van de custom query die je uitvoert:
<?php wp_reset_query(); ?>
En kijk dan eens of je widget wel werkt.
Even geprobeerd.
De widget werkt dan weer wel, maar hij haalt de posts niet meer op?
Na een hoop pogingen denk ik dat ik beter terug naar het begin kan gaan.
Wat is (bijvoorbeeld d.m.v. php) een goede manier om een widet slechts op een bepaalde pagina te laten zien?
Conditioneel laten zien van een widget.
Dat kan je op verschillende manieren oplossen. Je hebt nodig:
(i) een widget
(ii) een manier om php te kunnen gebruiken
Omdat php toestaan een mogelijk veiligheidslek is, moet je heel voorzichtig zijn. De plugin php-exec bijv. laat toe dat je overal (posts, widgets, etc) php kan gebruiken. Verder gaat die plugin niet goed samen met TinyMCE (kan je wel oplossen).
De oplossing die ik gebruik is het volgende: als widget neem ik die wordt geleverd door de samsarin php plugin. Die plugin staat php toe in de widget. Het al dan niet tonen van de widget wil je niet “hard coderen” in de plugin. Dus heb ik de plugin aangepast. Om verlies van aanpassingen te voorkomen bij opwaarderen van de plugin, heb ik de aangepaste plugin een beetje van naam veranderd en van auteur ed. De originele plugin opnieuw geïnstalleerd maar niet geactiveerd. Nu geeft mijn pluginpagina twee zeer op elkaar lijkende plugins achter elkaar, waarvan er één, de aangepaste, geactiveerd is. Als het dashboard mijn waarschuwt dat ik deze plugin moet opwaarderen, zie ik meteen dat ik moet oppassen.
Aanpassingen
In de plugin option pagina heb ik een extra textarea aangebracht waar je php code in kan zetten. Die code wordt opgeslagen in de options van de plugin in de database. In de functie spw_widget() van de plugin breng ik de volgende conditie aan:
$condition = trim($options[$number]['condition']); if ($condition) { eval("\$flShowWidget = $condition;"); } if ($flShowWidget != 1 && !is_admin() ) { return; }
Als je een widget altijd will laten zien dan zet je de conditie “TRUE;” in de option page. Werkt prima. De is_admin() conditie is om ervoor te zorgen dat de options page nog goed werkt. Het goede van de samsarin php plugin is dat je er net zoveel instanties van kan genereren als je wil
Waarschuwing
Een blog crasht heel makkelijk indien er nieuwe php code in wordt gezet. Dus altijd eerst testen. Verder kan het zijn dat je een functie aanroept die van een plugin afkomstig is. Deactiveren van de plugin geeft dan alsnog een crash. Daarom: gebruik altijd de conditie: function_exists()
Het begint steeds duidelijker te worden, en de widget werkt nu zoals het hoort. Bedankt!
Echter kan ik alleen niet reageren op een pagina, slechts op berichten. Er gebeurt niets als ik op Comment druk, zie deze pagina
Dit heeft volgens mij ook te maken met de volgende code die op die pagina staat;
<?php query_posts(‘category_name=speedspin’); ?>
Ik heb al geprobeerd om daarna te query te resetten maar dan laat hij de posts niet zien. Ergens een conflict?
Alvast bedankt voor de hulp!