Come utilizzare div -ids in url per saltare a specifiche post ... Is slash il colpevole?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/1810

  •  16-10-2019
  •  | 
  •  

Domanda

Alcuni link sul mio sito hanno l'utente a un post specifico in un contesto su una pagina di categoria .

su siti non-WP, questo è facilmente realizzabile includendo #example-div-id l'URL in questo modo:

http://www.example.com#example-div-id

Ma in un ambiente WP, questo URL non funziona :

http://www.example.com/?cat=15#post-170

Questa (erroneamente) salta la finestra del browser fino alla fine della pagina.

Ma questo funziona ... rimuovere manualmente la barra finale dopo caricamento della pagina e ricaricare la pagina. La finestra del browser passa al div appropriata, o per posta.

http://www.example.com?cat=15#post-170.

Qualcuno sa perché questo è? O come ottenere WP per eliminare la barra finale? È sicuro di eliminare la barra finale?

Aggiorna

Ho provato ad utilizzare la soluzione di EAMann sotto, attuazione belle permalink per facilitare il salto di ancoraggio. I risultati raggiunti completamente rompere il mio ordine postale e l'esclusione di categorie bambino. La mia navigazione è basata categoria. Non faccio uso di pagine, ma i nomi categoria d'uso nella navigazione. Ogni 'pagina' è in realtà un archivio categoria che mostra messaggi dalla categoria. Quello che ho letto su permalink che iniziano con% categoria% mi porta a evitare permalink tutti insieme. Io certamente non voglio iniziare il permalink con l'anno o inviati id sia. Non ha senso sul mio sito.

sguardi http://www.example.com/category/my-category più professionale e "normale" rispetto http://www.example.com/2009/my-category quando l'illusione previsto è che i nomi delle categorie sono davvero pagine di questo sito aziendale.

Così mi farebbe piacere eventuali altre spiegazioni perché il salto di ancoraggio non funziona.

Aggiornamento # 2

(in risposta al commento di EAMann direttamente sul PO) Il mio sito è un sito web aziendale che per la maggior parte visualizza contenuti statici. Alcuni settori hanno lavoro portafoglio in vetrina e c'è una sezione blog. Il sito utilizza una navigazione basata categoria. Tutto il contenuto del sito è scritto come messaggi. Ogni post è associato a una categoria che determina dove viene visualizzato il palo. Il menu di navigazione del sito è stato creato con wp_list_categories(). Cliccando su una categoria si apre un archivio di categoria che presenta tutti i posti della categoria.

Attualmente sto usando la struttura predefinita permalink.
http://www.example.com/?cat=15 mostra una pagina di categoria.

Aggiornamento # 3

Dopo ulteriori indagini, sembra che il plugin jQuery "innerfade" che sto usando per visualizzare una presentazione nella parte superiore della pagina è il colpevole. Non ha nulla a che fare con la barra finale. Spiacente di andare sulla strada sbagliata.

Se io commento del php che include il file il plugin js, e il salto di ancoraggio funziona bene. Direi che qualche manipolazione javascript del contenuto della pagina è avvitamento il salto. Ho lavorato tutto il problema utilizzando $(window).scrollTo();.

Apprezzo tempo di tutti.

È stato utile?

Soluzione 2

Come ho già detto negli aggiornamenti alla mia domanda ... altro javascript a lavorare sui conflitti di pagina con il salto di ancoraggio. I implimented più js per aggirare il conflitto. L'url sembra quasi la stessa di prima, ma con un nome di parametro inserito prima che il simbolo cancelletto,

http://www.example.com/?cat=15&hi=#post-170

ma io uso di jQuery-Howto 'plug-in' per ottenere parametri URL.

$.extend({
    getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }

    return vars;
},
getUrlVar: function(name){
            return $.getUrlVars()[name];
        }
});

I recuperare il numero di posto assegnato al 'ciao' url di parametri e di scorrimento per 20px sopra il post con lo stesso ID.

 //'hi' var used to jump to anchor          
    var hi = $.getUrlVar('hi');

    if  ( hi ) {
        //scroll to link or search results if url var 'hi' is present
        $(window).scrollTop($(hi).position().top-20); 

il codice plugin jQuery e il mio codice personalizzato sopra andare nel mio file javascript che è incluso nel header.php

Altri suggerimenti

In primo luogo, mi consiglia di utilizzare " belle permalinks " sopra la struttura predefinita di query-string. Questo elimina la maggior parte dei vostri problemi dalla GetGo. Sarà trasformare gli URL http://www.example.com/?cat=15#post-170 in http://www.example.com/category/category-slug/#post-170 e il browser si sposterà correttamente alla posizione del posto nella pagina.

Detto questo ... Sì, è possibile rimuovere la barra finale. Il trucco è quello di aggiungere una regola al file .htaccess:

#remove trailing slashes
RewriteCond %{HTTP_HOST} ^(www.)?yourdomain\.com$ [NC]
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

(Questo è tratto da un Drupal un'esercitazione che fa la stessa cosa ...)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top