WP site Notice Undefined offset

Status
Niet open voor verdere reacties.

damnsharp

Terugkerende gebruiker
Lid geworden
6 jan 2012
Berichten
1.394
Goedemorgen,
Ik heb een oude site moeten updaten van WP 5.4.10 naar WP 5.9.4. Na de updates in de test omgeving laat de site niet meer de algemene nieuwsberichten zien in het overzicht. Wel overigens andere nieuwsberichten.
Maar, die algemene nieuwsberichten zijn als custom post type "Nieuws items" geconfigureerd.
Ik heb de site niet gebouwd en weet ook niet precies waarom voor die constructie is gekozen, dat ben ik nog aan het uitzoeken.

Er is een foutmelding in functions.php
Notice: Undefined offset: 4

PHP:
//Add this rewrite in your functions.php to add a query string to target
add_action( 'init', 'forum_paging_redirect', 10 );
function forum_paging_redirect( $redirect_url ) {
    global $segments;

    if($segments[3] === 'algemeen-nieuws' && $segments[4] === 'page') {
        echo '<script>window.location = "/blog/category/algemeen-nieuws/?page='.$segments[5].'";</script>';
    }
}

Als ik naar websitenaam.nl/blog/category/zomaar-een-categorie/ ga zie ik wel berichten.
Als ik naar websitenaam.nl/blog/category/algemeen-nieuws/ ga zie ik geen berichten.
Een bericht zelf in de categorie algemeen-nieuws kan ik wel zien via websitenaam.nl/blog/titel-bericht

Ben geen PHP held, wat gaat er mis in de code? Thanks!
 
Kan het liggen aan het theme wat misschien niet getest is op de allernieuwste versie van Wordpress?
Kijk daar eerst eens naar.

Altijd lastig als je een probleem moet oplossen van een website die door anderen is gemaakt. Daarom eerst dit soort zaken uitsluiten of zet er eens een ander theme op, zodat je kan zien of daar ook dit probleem zich voordoet.
 
Hoi, bedankt voor je reactie. Thema is wel vernieuwd maar ik zou inderdaad wel een ander thema kunnen proberen.
Ja erg lastig zoiets uit te zoeken, klopt :)
 
Je kan ook een isset() gebruiken om de error te verhelpen. Blijkbaar is $segments[4] niet altijd beschikbaar.
Gelukkig is het maar een Notice, en geen Warning :)
 
Laatst bewerkt:
Test dit eens
PHP:
add_action( 'init', 'forum_paging_redirect', 10 );
function forum_paging_redirect( $redirect_url ) {
    global $segments;

    echo "<code><pre>";
    print_r ($segments);
    echo "</pre></code>";

    // if($segments[3] === 'algemeen-nieuws' && $segments[4] === 'page') {
    //     echo '<script>window.location = "/blog/category/algemeen-nieuws/?page='.$segments[5].'";</script>';
    // }
}
 
Dank jullie wel voor reacties. @Aar weet niet hoe isset() werkt maar zal Googlen. Fijn dat het in ieder geval geen warning is maar notice.
Ik ben op de foutmelding gekomen omdat ik na updates merk dat het blog problemen geeft.
Ze hebben een standaard WP blog met categorieën. En waar ik nu achter ben ook een Custom Post Type blog wat gevuld wordt vanuit een applicatie.
En na de updates wordt er nu van alles dubbel getoond.
Ik vermoed dat het met die code te maken heeft maar ja, heel spannend lijkt die code niet te zijn.

@bron da's ook een heel goed idee om zo erachter te komen waar wat voor dient. De output scheelt per pagina ik ga maar:
Als ik naar de volgende pagina ga komt er te staan: /blog/category/algemeen-nieuws/
Code:
Array
(
    [1] => blog
    [2] => category
    [3] => algemeen-nieuws
    [classes] => blog category algemeen-nieuws
)

Als ik naar de volgende pagina ga komt er te staan: /blog/category/bedrijfsnaam-nieuws/
Code:
Array
(
    [1] => blog
    [2] => category
    [3] => bedrijfsnaam-nieuws
    [classes] => blog category bedrijfsnaam-nieuws
)
 
Zo te zien kijk je naar deze regel, en die heeft geen waarde:

$segments[4]

Mogelijk wel bij een URL met: /blog/category/bedrijfsnaam-nieuws/post

Persoonlijk denk ik eerder dat deze URL niet klopt, en een andere waarde moet zijn.
Of je moet erbij met isset() controleren of die bestaat.

Zie ook www.php.net/isset
 
Laatst bewerkt:
'....?page=' . $segments[5] zit ook niet in de array :confused:
 
Hartstikke dank voor de hulp! Ik ga de maker van de API koppeling inschakelen. Ik zie nu dankzij het script van @bron dat bij de live site dat de array anders wordt gevuld.
livesite.nl/blog/category/algemeen-nieuws/
Code:
Array
(
    [1] => bedrijfsnaam
    [2] => blog
    [3] => category
    [4] => algemeen-nieuws
    [classes] => bedrijfsnaam blog category algemeen-nieuws
)

ontwikkelsite.nl/blog/category/algemeen-nieuws/
Code:
Array
(
    [1] => blog
    [2] => category
    [3] => algemeen-nieuws
    [classes] => blog category algemeen-nieuws
)

Ben weer een stuk wijzer geworden, weet nu ook meer hoe fouten binnen php op te sporen zijn.

Ik ga de vraag sluiten, nogmaals dank.
 
Heeft het misschien te maken met die je de URL-opbouw in het dashboard hebt ingesteld? De permalinks?
 
Aar is mij net voor, opeens moest ik daar aan denken.
Vaak even de permalinks veranderen en weer terugzetten naar hoe ze stonden. Wil vaak helpen!
 
:thumb: Dank jullie wel. Had dat ook gedaan maar niet geholpen. En @femke98 ook ander thema geprobeerd, zelfde resultaat. :(
 
Dan ben ik blij dat ik mijn eigen CMS/framework gebouwd heb. ;)

Wordpress is leuk, maar erg log, bloated, basaal en soms lastig te doorgronden. Eigenlijk wordt het tijd dat de maker 'from scratch' met iets nieuws komen, i.p.v. met een blog-software die in het afgelopen decennia is uitgebouwd in een mengelmoes van verschillende stijlen, zonder abstracte lagen.
 
Wordpress is leuk, maar erg log, bloated ....
Elk nadeel z'n voordeel :d Met wat leeswerk kan iedereen een WP website opzetten zonder PHP / CSS kennis.
Wat HTML kennis is wel handig voor een WP gebruiker.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan