Het is werken met de garagedeur open. Dankzij een notitie van Jan had ik al snel door wat ik zou moeten doen. Ik heb nu de volgende functie gemaakt:
add_action("genesis_entry_content", "dtd_note_on_main", 1);
function dtd_note_on_main(){
if (has_post_kind('note')){
return the_content();
}
}
Tot zover lijkt het me redelijk overzichtelijk. Maar nu toont de voorpagina tweemaal de notitie. Eén keer volledig, met HTML, zoals ik het wil. En direct daaronder de oude versie.
Nu denk ik dat ik de verkeerde hook gebruik. Ik moet geen genesis_entry_content gebruiken. Maar wat dan wel? Als ik deze visuele gids gebruik, zou genesis_post_content ook een optie zijn, maar die laat niets zien als output. Ik kom er nog niet helemaal uit. Maar ben wel dichtbij!
Jan says
the_content()
gaat zijn output sowieso naar het ‘scherm’ (d.i. je HTML-document) ‘printen’, dus diereturn
daarvoor hoeft niet.Nu, wat er gebeurt: je werkt met een ‘action’ (geen ‘filter’) en gaat dus iets toevoegen aan de bestaande output. (Met een filter zou je net gegevens of variabelen overschrijven.) Je moet dus ook weer iets weghalen. Zelf kwam ik online het volgende tegen: https://my.studiopress.com/documentation/snippets/entry-content-html5/remove-entry-content/.
Alleen, dan ga je van élke post (die geen note is) de content weghalen. Je moet er dus in die nieuwe callback van je voor zorgen dat óf (voor notes) de volledige content wordt getoond, óf de samenvatting (voor al de rest). Iets met
if
…else
, dus.Afijn, zoiets, ik ben geen Genesis-kenner.
Frank Meeuwsen says
Ha! Je hebt me wel op het goede pad gebracht. Ik heb namelijk al mijn extra code in een eigen plugin gestopt, zodat ik de functions.php van het gebruikte childtheme intact kan houden. Plus ik wilde wat experimenteren met een eigen plugin 😉
Ik merkte dat remove_action maar niets deed. Dat zette een luikje in mijn geheugen open. Ik had ooit eens ergens had gelezen dat remove_action niet (goed?) werkt in plugins. Een snelle test tijdens de lunchpauze doet mijn vermoedens bevestigen.
Dit weekend ga ik dus alles netjes in orde maken. Dank!
Jan says
(Even snel hier antwoorden.) 😉
`remove_action()`hoort gewoon te werken. Wel kan het zijn dat je nog een derde parameter nodig hebt, de zogenoemde ‘priority’.
Ook kan het het zijn dat je (sub)thema een andere ‘hook’ gebruikt, of een andere callback. (Geen idee hoe up-to-date die documentatie allemaal is.) Of helemaal geen hook en callback maar gewoon hardcoded `the_excerpt()` of zo aanroept. Of van nog een andere ‘template tag’ gebruik maakt die finaal `the_excerpt()`aanroept. Alles kan.
Maar daarvoor zou je even in de templates moeten duiken.