Toon posts:

[php] Wordpress links uitlezen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DIT PROBLEEM IS OPGELOST! Topic kan evnt dicht. Iedereen bedankt!

EDIT: mijn vraag is misschien een stuk simpeler dan de start post doet vermoeden: Hoe krijg ik die functie "get_bookmarks()" werkend op een andere pagina dan een pagina binnen het weblog?


Ik heb op een website Wordpress draaien (V2.7). Allemaal mooi en precies zoals ik wil. Nu wil ik op een andere pagina op diezelfde website links laten zien die door wordpress uitgespuugd worden.

Even voor het idee:
Wordpress gebruikt het volgende stuk code om in de sidebar links te laten zien (die gebruikers zelf toegevoegd hebben):

PHP:
1
2
3
4
5
<?php   /* Widgetized sidebar, if you have the plugin installed. */
        if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
    <?php wp_list_pages('title_li=' . __('Pages:')); ?>
    <?php wp_list_bookmarks('title_after=&title_before='); ?>
    <?php wp_list_categories('title_li=' . __('Categories:')); ?>


Nu zit wordpress leuk in elkaar en daar kan weinig mis gaan, maar op de pagina waar ik deze links wil hebben draait de wordpress blog niet, maar staat random informatie. Ik heb op die pagina zelf een systeempje in elkaar gezet, maar dat wil ik vervangend door de info uit wordpress (gebruikersvriendelijker, users kunnen alles op 1 plek regelen). De opbouw moet hetzelfde blijven. In de linkerkolom een cat selecteren, en dan op de pagina de bijbehorende links tonen.

Ik heb de volgende twee functies nu werkend:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function showLinks($max = false, $cat = false, $descr = false){
    if($max){
        $limit = ' LIMIT ' . intval($max);
    }
    
    if($cat){
        $where = ' WHERE cid = ' . intval($cat);
    }
    
    $res = mysql_query('SELECT * FROM links' . $where . ' ORDER BY crdate DESC' . $limit);
    
    $r = ''; // clear var
    
    while($row = mysql_fetch_assoc($res)){
        $row['title'] = (strlen($row['title']) >= 30)?substr($row['title'], 0, 30).'...':$row['title'];
        $r .= '<li><a href="' . $row['url'] . '" target="_blank">' . htmlspecialchars($row['title']) . '</a>';
        
            if($descr && !empty($row['descr'])){
                $r .= '
                    <span class="descr">' . htmlspecialchars($row['descr']) . '</span>
                ';
            }
        
        $r .= '<small>' . strftime('%d %b %Y', $row['crdate']) . '</small></li>';
    }
    
return '<ul>' . $r . '</ul>';
}


PHP:
1
2
3
4
5
6
7
8
9
10
11
function linkCategories($baseurl = 'http://aardrijkskundelokaaldevelsteincollege.nl/www/links.php'){
    $res = mysql_query('SELECT * FROM linkcategories ORDER BY title ASC');
    
    $r = ''; // clear var
    
    while($row = mysql_fetch_assoc($res)){
        $r .= '<li><a href="' . $baseurl . '?lc=' . $row['uid'] . '">' . htmlspecialchars($row['title']) . '</a><span style="display:none;" class="descr">' . htmlspecialchars($row['descr']) . '</span></li>';
    }
    
return '<ul>' . $r . '</ul>';
}


Zoals je ziet gebruik ik nu 'links' en 'linkcategories'. Wordpress heeft dit samengevat in 'wp_links'. Volgens mij moet ik mijn scripts hierop aanpassen, maar hoe?

Voor het idee:

Overzicht van de wordpress wp_links:
Afbeeldingslocatie: http://www.d-serv.nl/portal/index.php?d=/overig&f=Afbeelding%201.png

de wordpress weblog:

http://www.aardrijkskundelokaaldevelsteincollege.nl/www/weblog/

De links pagina:

http://aardrijkskundelokaaldevelsteincollege.nl/www/links.php


Nu is dus de grote vraag, hoe kan ik dit oplossen?

[ Voor 37% gewijzigd door Verwijderd op 15-12-2008 22:45 . Reden: Opgelost ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kijk eens naar Hoe werken joins?. Zoals ik het zie moet je linkcategories en links joinen aan wp_links waarbij link_id en link_category de FK's zijn (zonder verdere informatie althans is dat my best guess).

Dan: als je code post; gebruik dan a.u.b. code tags; dat maakt je post een stuk leesbaarder. Pas aub even je topicstart aan daarvoor.

[ Voor 9% gewijzigd door RobIII op 15-12-2008 00:22 ]

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

Je kan toch gewoon het framework hiervoor laden? Welke je daarvoor moet hebben weet ik helaas niet.
Vervolgens krijg je gewoon de beschikking over de API van WordPress en dus ook deze functies? :)

Ik neem aan, dat dit wel ergens te vinden is in de WordPress documentation? Want daar zie je vaak (ook met plugins) hoe je dingen moet laden buiten templates om en dergelijke. :)

En volgens mij zijn hier ook gewoon plugins voor, die je vervolgens op een page zet of iets dergelijks.
Tenminste, zo zou ik het doen... ;)

Of je moet er een reden voor hebben, om dit niet op die manier te gebruiken of Wordpress als CMS voor je volledige site, want als ik je zo lees, wil je dat wel. :)

[ Voor 12% gewijzigd door CH4OS op 15-12-2008 00:24 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@robIII:
heb de php tags toegevoegd, was ik vergeten, excuus.

Volgens mij gaat het niet met joins werken, volgens mij moet ik gebruik maken van de info die WP zelf in de database plempt. Zie daarvoor het screenshot van de DB in mijn startpost. Ik krijg alleen geen fatsoenlijke code op papier om dat uit te lezen en weer te geven.

Ik heb me rot zitten zoeken voor plugins o.i.d., maar nog niets gevonden. Ook het inladen van die API op een andere webpagina is mij niet gelukt, ook nergens kunnen vinden waar dat zou moeten. Ik ben redelijk dor mijn ideeën heen inmiddels...

Acties:
  • 0 Henk 'm!

  • soap
  • Registratie: December 2000
  • Laatst online: 10:26

soap

diskoers.

Heb je al gekeken in de Wordpress Codex naar get_bookmarks
en wp_list_bookmarks ?
En dan bedoel ik naar de functies in de source, hoe die in elkaar steken en hoe die de data benaderen.

[ Voor 20% gewijzigd door soap op 15-12-2008 12:25 . Reden: verduidelijkt. ]

.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja die heb ik inderdaad gezien en ik denk ook dat ik daar heel erg veel mee kan. Het grootste probleem is voorlopig hoe ik die functie werkend krijg op een pagina buiten de weblog. Daarvoor zal een pagina o.i.d. geincluded moeten worden, mijn vraag is misschien een stuk simpeler dan de start post doet vermoeden: Hoe krijg ik die functie "get_bookmarks()" werkend op een andere pagina dan een pagina binnen het weblog?

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 22-09 20:16
zoals je zelf al zegt gewoon het bestand waarin die functie staat includen, ergens bovenaan je pagina. Dan zou het goed moeten gaan.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oke, ik ben eruit. Eindelijk. De oplossing staat hier: http://wordpress.org/supp...51?replies=16#post-498946

Het gaat om het include gedeelte, en dan met name 'wp-config'. Iedereen bedankt voor het meedenken!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mcDavid schreef op maandag 15 december 2008 @ 13:30:
zoals je zelf al zegt gewoon het bestand waarin die functie staat includen, ergens bovenaan je pagina. Dan zou het goed moeten gaan.
Dat was het probleem, ik kwam er maar niet uit welk bestand ik nodig had. WP press gaat daar nogal vreemd mee om

Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 10:15

Basszje

Reisvaap!]

In Wordpress heb je een heel framework er nog omheen hangen idd. Je moet dus eerst alle instellingen laden. Volgende stap is dat WP normaliter dus naar je themes gaat kijken .Ik wist eerlijk gezegd niet dat het zo zou werken - ik heb nogal veel ruzie gehad ermee in een site - .

Je kan trouwens ook gewoon via PHP de categorieën + links eruit gooien met SQL. Dat lijkt mij minder update-gevoeliger maar wel wat lastiger.

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
Tja en zeker voor mij. Ik weet de weg (nog) niet echt in PHP. Ik kan wel dingen aanpassen, kopieren en bij elkaar rapen, maar zomaar uit mijn blote hoofd queries schrijven lukt mij niet. Maar het werkt dus wel nu in WP, erg gaaf moet ik zeggen! Met het inlezen van dat ene bestand laad zo ongeveer het hele framework.

Volgende stap die ik wil maken is de volgende:

PHP:
1
<?php wp_list_bookmarks('categorize=1&category_before=<li><a href=$cats>&category_after=</a></li>') ?>


Nu staat er nog $cats, dat klopt niet (werkt ook niet). Wat moet het wel zijn?
Pagina: 1