[php] Wordpress categorien met PHP uitlezen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tot nu toe heel erg bedankt voor de hulp die ik van verschillende mensen heb mogen ontvangen.

Ik werk met WordPress (V2.7), op de pagina 'weblog'.
Op de pagina 'links' laat ik links zien die in wordpress zijn ingegeven met de volgende functie:

PHP:
1
wp_list_bookmarks('categorize=1&category_before=<li><a href="links.php?cat=%id">&category_after=</a></li>&title_before=&title_after=&before=<li class="invinsible">&after=</li>')


Zoals je ziet wordt er aan de categorie een link meegegeven. Tot zover werkt dat mooi. Nu heb ik de volgende functie die ik werkend wil hebben, als er op een categorie geklikt wordt moeten de bijbehorende links getoond worden.

PHP:
1
2
3
4
5
6
7
8
9
if($_GET['cat'] != ""){
        
            echo wp_list_bookmarks('include=IETS&before=<li class="link_total">&after=</li>&title_after=</h3>&title_before=<h3>&show_description=1&between=<br />');
        
            } else {
        
            echo '<p>Op deze pagina vind je bestanden die jou docent voor je op internet heeft gezet. Kies links je leerjaar. Daarna kun je kiezen voor je niveau, je klas of algemene bestanden.</p>
        <p>Lukt iets niet of heb je vragen? Neem contact op met je docent!</p>';
            }


De grote vraag is, wat moet er op de plaats van 'iets' staan, waardoor netjes de juiste categorie getoond wordt?

alvast bedankt voor de reacties!

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Dit is meer iets voor het Wordpress help forum aangezien het functionaliteit is die zij ontwikkeld zouden moeten hebben. Ik stel voor dat je daar je vraag stelt, en mocht het toch een PHP ding zijn dan kun je een nieuw topic openen in Programming, want daar horen de PHP vragen ;)

Na overleg open.

Wat wil je precies doen en waarom lukt het niet? Op welk stukje PHP loop je vast?

[ Voor 20% gewijzigd door André op 15-12-2008 23:55 ]


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-09 13:49

Patriot

Fulltime #whatpulsert

Ik heb totaal geen ervaring met WP, maar ik haal dit uit de docs:
Comma separated list of numeric bookmark IDs to include in the output. For example, 'include=1,3,6' means to return or echo bookmark IDs 1, 3, and 6.
Je moet dus de ids van de bookmarks in de bookmark category met het bijbehorende id hebben. Hoe je dat moet doen moet je zelf even uitzoeken.

EDIT:
Lijkt me overigens toch vrij WP-specifiek. Dit heeft niets met PHP op zich te maken natuurlijk.

[ Voor 13% gewijzigd door Patriot op 16-12-2008 00:49 ]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Als je nou zoals ik eerder al zei: GJtje in "[php] Wordpress links uitlezen" het WP framework laad, hoef je toch het wiel niet opnieuw uit te vinden?

Ik weet helaas niet welke files je moet hebben, maar staat wél in de documentatie, kan je zo de functies gebruiken via WP zelf.
Zo te zien iets met category.php... ;) Zie overigens ook hun template hierarchy.

En heeft de oplossing die je zelfs zelf geeft niet geholpen:
Verwijderd in "[php] Wordpress links uitlezen"

[ Voor 34% gewijzigd door CH4OS op 16-12-2008 01:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ Patriot, dat klopt, zover was ik ook. Maar de vraag is nu, hoe ik de variabele uitlees. Iets als $_GET['cat'] normaal gesproken, maar dat werkt niet, en ik vraag me af waarom niet.

@ GJtje, het hele framework IS ingeladen (include wp-config.php)

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

so-me: zie de vraag van Andre. Op welk stuk loop je nu vast? Wat bedoel je met "werkt niet"? We need more info en dat heb je ook toegezegd om te geven ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jup en hier is het (moest nog even wakker worden vanochtend, sorry).

Ik heb het volgende kunnen bedenken. Nu ben ik geen php freak en er zit dus een denk en/of stelfout in dit verhaal want hij geeft nu geen enkele cat weer.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
global $wp_query;
                $cat_obj = $wp_query->get_queried_object();
                if ( is_category() )
                {
        
            echo wp_list_bookmarks('include='.$cat_obj->cat_ID.'&before=<li class="link_total">&after=</li>&title_after=</h3>&title_before=<h3>&show_description=1&between=<br />');
        
            } else {
        
            echo '<p>Op deze pagina vind je bestanden die jou docent voor je op internet heeft gezet. Kies links je leerjaar. Daarna kun je kiezen voor je niveau, je klas of algemene bestanden.</p>
        <p>Lukt iets niet of heb je vragen? Neem contact op met je docent!</p>';
            }

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ga eens debuggen (zie Debuggen: Hoe doe ik dat?); je doet nu niets anders dan steeds roepen "het werkt niet <*dump code*>". Als iets niet werkt ga je stap voor stap na waarom dat zo is. Dus druk tussentijds variabele waardes, queries etc. af. Zet error reporting aan en ga zo maar door. Dit schiet niet op en we zijn al helemaal niet van plan je handje vast te houden.

Ga dus na of $cat_object bevat wat je verwacht (var_dump bijv.), welke tak van de if() genomen wordt (dus: doet is_category() wat je verwacht?) etc. etc.

[ Voor 17% gewijzigd door RobIII op 16-12-2008 09:31 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Verwijderd schreef op dinsdag 16 december 2008 @ 09:03:
@ GJtje, het hele framework IS ingeladen (include wp-config.php)
Waar loopt het spaak dan of krijg je een error?
Wat er op de plek van IETS moet staan, is het ID van de categorie? :)
Heb je de Codex al nageken van deze functie?
Als ik die zo bekijk, is wp_list_bookmarks de functie voor het aanroepen van links toegevoegd in de blogroll, weet niet of dat dat de bedoeling is? :?

Als ik jou (en je pagina) zo zie, zou ik zeggen dat je gewoon pages moet maken en die moet opvragen via de reguliere weg, via (ik meen) page.php óf single.php in je template. Plugins genoeg die je eventueel verder op weg kunnen helpen als je bijvoorbeeld een lijst wil hebben van subpages. Als je gaat [google=ddlistsubpages] krijg je geloof ik bij de eerste al een goeie hit.

Mocht ik naast jouw bedoelingen zitten, vertel dan even wat je wilt, omdat het anders behoorlijk onduidelijk is.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Alleerst heb ik echt af en toe een vinger nodig, niet een hele hand, wel een vinger. Ik ben absoluut niet ervaren met het hele php verhaal. Ik heb je advies wel opgevolgd en stap voor stap gaan controleren of elk stukje code klopt, en wat er als return komt.

PHP:
1
2
global $wp_query;
                $cat_obj = $wp_query->get_queried_object();


Dit levert NULL op, terwijl het linkcat-NUMMER op zou moeten leveren. Als ik er get_queried_object_id van maak komt er 0 terug, wat ook onjuist is. Op deze pagina is mooi te lezen hoe de functie werkt. Ik denk wel, als ik dat lees, dat ik ervan uit mag gaan dat ik terecht gebruik maak van get_queried_object.

Dat $wp_query-> er hoort te staan is mij ook duidelijk (haal ik hem weg dan krijg ik sowieso een error
PHP:
1
Fatal error: Call to undefined function get_queried_object_id() in


$cat_obj hoort er ook thuis volgens mij, aangezien ik die later aanroep in mijn 'include' functie (zie eerdere post).

En toch, en toch, krijg ik NULL terug in plaats van het object id.

Het enige wat ik nog kan bedenken (en nee, daar kom zelf niet uit) is dat ik een grandioze denkfout maak door ervanuit te gaan dat get_queried_object zich baseert op de url (waar nu dus links.php?cat=linkcat-16 staat) en daarom NULL oplevert.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 16 december 2008 @ 10:21:
...door ervanuit te gaan dat get_queried_object zich baseert op de url
Assumptions are the mother of all fuckups ;)
Het mooie is dat je even de code van get_queried_object in kunt duiken om te zien wat 'ie doet (en zelfs die kun je op dezelfde manier debuggen). Je hoeft dus geen aannames te doen. (Overigens kan het prima zo zijn dat dat wel het geval is, je moet het alleen gewoon niet aannemen maar zeker weten ;) )

[ Voor 17% gewijzigd door RobIII op 16-12-2008 10:33 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mooi verwoord die eerste zin ;)

ik heb je raad opgevolgd, en mijn aanname bleek (in dit geval) juist te zijn. Maar je hebt gelijk, altijd eerst even checken.

Maargoed, met de wetenschap dat de code klopt, voor zover ik de kennis om dat te achterhalen, zit ik nu toch echt officieel vast :(

Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 16:37

Basszje

Reisvaap!]

is_category() - When any Category archive page is being displayed.
Herlees even de link die gaat over de template hierarchy. In principe laat WP in je themes category.php als je op een categorie pagina terecht komt tenzij die niet bestaat en default dan verder 'omhoog' de ladder op.

Belangrijkst in wordpress is goede kennis van Ze mighty loop

Bookmarks: hierzo

En je kan het ID van de category ophalen via : Get the Category

Ik vermoed dat indien je in een category archive page zit je via get_the_category gewoon de huidige category krijgt mits je in de loop zit. Via list_bookmarks kan je vervolgens de bookmarks horende bij die categorie ( of categorieen ) ophalen.

Als je dat allemaal plakt in je standaard category theme template zonder verder iets met de posts tags te doen krijg je voor zover ik kan zien het gewenste resultaat tenzij je wat anders bedoeld .

Ongetest en wellicht niet werkzaam, maar voor het idee:
code:
1
2
3
4
5
6
7
$cats = array();  
foreach((get_the_category()) as $category) { 
   $cats[] = $category->cat_ID;
} 

$cats = implode(",",$cats); 
wp_list_bookmarks('category=$cats');

[ Voor 10% gewijzigd door Basszje op 16-12-2008 18:54 ]

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dankzij wat hulp van buitenaf heb ik het probleem inmiddels opgelost. Toch wil ik ook zeker jullie enorm bedanken voor alle tips, al was het alleen maar door mij te leren hoe ik hiernaar moet kijken.

Voor wie het wil weten, hier de uiteindelijke code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
                    //var_dump($_GET[ 'cat' ]);
                    $_GET[ 'cat' ] = substr( $_GET[ 'cat' ], strlen('linkcat-') ); // linkcat- wordt van $_GET[ 'cat' ] afgehaald en deze variabele is nu alleen een getal
                    //var_dump($_GET[ 'cat' ]);
                    
                    if ( ( isset( $_GET[ 'cat' ] ) ) && ( is_numeric( $_GET[ 'cat' ] ) ) ) // $_GET[ 'cat' ] is beschikbaar en het is een getal
                    {
                        echo wp_list_bookmarks('category='.$_GET[ 'cat' ].'&before=<li class="link_total">&after=</li>&title_after=</h3>&title_before=<h3>&show_description=1&between=<br />');
                    }
                    else
                    {
                        echo '<p>Op deze pagina vind je bestanden die jou docent voor je op internet heeft gezet. Kies links je leerjaar. Daarna kun je kiezen voor je niveau, je klas of algemene bestanden.</p>
                            <p>Lukt iets niet of heb je vragen? Neem contact op met je docent!</p>';
                    }
                ?>
   

Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 16:37

Basszje

Reisvaap!]

Auw mijn hoofd :P . Het blijft een vreemde constructie met die GET waardes uitlezen, dat moet normaliter gewoon anders kunnen.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.

Pagina: 1