Snippet werkte in Wordpress 2.9, maar niet in 3.0.1

  • Onderwerp starter Onderwerp starter day1
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

day1

Gebruiker
Lid geworden
25 dec 2009
Berichten
10
Ik gebruikte een stukje php op mijn wordpress site om de parents in een menu niet klikbaar te maken.
Het werkte allemaal prima in wordpress 2.9, maar sinds de update naar 3.0.1 werkt het niet meer. Ik ben niet heel goed in php, maar heb het toen werkend gekregen, en nu lukt het me niet meer.
Het gaat om de volgende php code:
PHP:
<?php
function removeParentLinks() {
$pages = wp_list_pages('exclude=156&echo=0&title_li=&'); // 156 = incompitability 
$pages = explode("</li>", $pages);
$count = 0;
foreach($pages as $page) {
    if(strstr($page,"<ul>")) {
        $page = explode('<ul>', $page);
        $page[0] = str_replace('</a>','</span>',$page[0]);
        $page[0] = str_replace('<a','<span class="opmaak" ',$page[0]);
            if(count($page) == 3) {
                $page[1] = str_replace('</a>','</span>',$page[1]);
                $page[1] = str_replace('<a','<span',$page[1]);                
            }
        $page = implode('<ul>', $page);
    }
    $pages[$count] = $page;
    $count++;
}
$pages = implode('</li>',$pages);
echo $pages;
}
?>

Wat het doet is: het haal het standaard <a> en </a> van de parent weg, en vervangt het door <span class="opmaak"> en </span>.

Weet iemand wat er veranderd moet worden om het werkend te krijgen op wordpress 3.0.1?

Gr, Day1
 
Kijk of deze variable zich vult
$pages = wp_list_pages('exclude=156&echo=0&title_li=&'); // 156 = incompitability
 
Ja, deze vult zich.
Wat is ben vergeten te vertellen is dat het resultaat dat het stukje code geeft, geen verschil heeft met de standaard wp_list_pages() functie, oftewel: de snippet kan zijn werk niet doen en echo't de standaard functie terug.
 
De hiërarchie die wordpress 3 gebruikt ziet er als volgt uit voor wp_list_pages():

HTML:
<ul>
    <li><a></a>
        <ul class="children">
             <li><a></a></li>
        </ul>
    </li>
</ul>

wat me opvalt is dat hij voor de children een class meegeeft, ik weet niet of dit voor problemen zorgt?
 
wat me opvalt is dat hij voor de children een class meegeeft, ik weet niet of dit voor problemen zorgt?

7. uiteraart wel if(strstr($page,"<ul>")) {
8. $page = explode('<ul>', $page);


mogelijks zal je moeten kijken naar pos van <ul vervolgens starten van die positie en zoeken naar >
en dan kan je een substring doen en of kappen op die plaats.
 
Ik heb geen idee hoe ik dat moet doen :eek:.
Zoals ik al zij, ik heb slechts een beetje kennis van php..
 
k heb inmiddels een oplossing gevonden:
Je moet de class="children" wegslopen met str_replace().
Op de volgende manier:
PHP:
$pages = str_replace("<ul class='children'>", "<ul>", $pages_first);
de totale code komt er dus zo uit te zien:
PHP:
<?php
function removeParentLinks() {
$pages_first = wp_list_pages('exclude=156&echo=0&title_li=&');  //156 = incompitability 
$pages = str_replace("<ul class='children'>", "<ul>", $pages_first);
$pages = explode("</li>", $pages);
$count = 0;
foreach($pages as $page) {
    if(strstr($page,"<ul>")) {
        $page = explode('<ul>', $page);
        $page[0] = str_replace('</a>','</span>',$page[0]);
        $page[0] = str_replace('<a','<span class="opmaak" ',$page[0]);
            if(count($page) == 3) {
                $page[1] = str_replace('</a>','</span>',$page[1]);
                $page[1] = str_replace('<a','<span',$page[1]);                
            }
        $page = implode('<ul>', $page);
    }
    $pages[$count] = $page;
    $count++;
}
$pages = implode('</li>',$pages);
echo $pages;
}
?>
Ik hoop dat meer mensen hier wat aan hebben.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan