Esiste una lunghezza massima per lo slug in WordPress?
Un cliente ha appena creato un post con uno slug molto lungo (90 caratteri), senza caratteri speciali (tranne i trattini) ecc.
Ogni volta che si cliccava sul link a quel post, inclusi i link "Anteprima" o "Visualizza questo Post" dal backend di amministrazione, veniva generato un errore 404.
Dopo aver accorciato manualmente lo slug, tutto ha funzionato come previsto. Questa è una "funzionalità" o un "bug"?
EDIT: una nota per tutti quelli che parlano di limiti del database.
Se avessi raggiunto il limite del campo del database, lo slug stesso sarebbe stato troncato. Pensateci un attimo. Nella maggior parte delle installazioni WP, wp_posts.post_name è VARCHAR(200). Quindi, supponiamo che qualcuno inserisca un titolo con > 200 caratteri. Cosa succede? Lo slug viene troncato a 200 caratteri e memorizzato in wp_posts.post_name. Non è che qualcuno va a digitare il titolo completo del post nella barra degli indirizzi del browser, sostituendo gli spazi con trattini, giusto? L'URL viene generato da WordPress, che prende l'URL dalla tabella wp_posts.post_name e lo inserisce nell'attributo href del tag anchor. Quindi non ci sarà disparità. Tutto il discorso sul database è una falsa pista.
In ogni caso, lo slug in questione è di soli 90 caratteri, quindi non ha nulla a che fare con i limiti del database.
Ci sono limitazioni note riguardo al rewrite?

@TomAuger & Eugene - potete confermare il problema, perché Tom dice che lo slug aveva 90 caratteri. So che il limite è 200, ma questo non include l'URL della home, giusto?

Probabilmente il problema non era nemmeno direttamente legato a WordPress o al database...
Ma la lunghezza dell'URL superava i 255 caratteri (e non tutti i browser web apprezzano questa cosa).
Quello che potrebbe essere successo qui è stato un URL più lungo di 255 caratteri, che è stato troncato dalla barra degli indirizzi del browser durante l'apertura... causando il recupero di un permalink errato... che ha restituito un errore 404.
Quindi presumibilmente la lunghezza massima dello slug potrebbe essere:
255 - la lunghezza di (Protocollo + FQDN + struttura del permalink)...
- basandosi su un limite rigido del browser.
Ma non può essere più lungo di 200 caratteri...
- basandosi sulla dimensione del campo post_name.
Anche se qualcos'altro potrebbe aver causato il 404 in questo caso specifico.
Avrebbe potuto essere anche un carattere che non è stato codificato correttamente con url_encode, le ragioni per i 404 sono praticamente infinite... avete mai considerato un cluster danneggiato su HDD o un modulo RAM difettoso? :)

Il GUID non è l'URL. Sembra un URL, ma non viene utilizzato per leggere una richiesta. Se sposti WordPress da un dominio a un altro, il GUID non verrà modificato. Vedi http://core.trac.wordpress.org/ticket/6492 e http://core.trac.wordpress.org/ticket/10857.

Ehm, per quale altro scopo se non l'identificazione dovrebbe essere utilizzato un ID univoco? Voglio dire, la domanda fondamentale è: qual è il motivo per cui in questo caso viene restituito un errore 404?

L'errore 404 e il GUID non sono correlati, credo. WordPress semplicemente non utilizza il GUID quando cerca un post che corrisponde a un URL.

Penso che tu abbia ragione... post_name e GUID possono essere esclusi come fonte del problema - ciò che resta sono i permalink e i re-write. Senza i logfile di Apache o altro, questa è solo un'ipotesi ;)

@syslogic Penso che i rewrite siano probabilmente la causa e meritino ulteriori indagini. L'URL, incluso la parte http://, era ancora sotto i 128 caratteri, quindi non credo che stia raggiungendo un limite rigido del browser sulla lunghezza dell'URL.
