Come aggiungere un collegamento personalizzato a un menu con un URL relativo all'URL del blog
-
-
Willington,nonposso aiutarti atrovare un URL chefunzioni ovunque.Quello chepossofare èindirizzarti a http://spectacu.la/search-and-replace-for-wordpress-databases/.Uso la ricercae sostituzione di David da unpo 'ditempoe funzionabene per cambiare,ades.url - anche senei dati serializzati.Ecco come lofaccio: solo collegamenti codificatie convertiti dopo aver spostatoil databasein un altro dominio.Buonafortuna,PeterWillington, i cant help you to an url that works anywhere. What i can do is point you to http://spectacu.la/search-and-replace-for-wordpress-databases/. I've been using David's search&replace for quite some time and i works good to change e.g. url's - even when in serialized data. So that is how i do it: just hardcoded links and convert after moving the database to another domain. Good luck, Peter
- 5
- 2011-03-11
- Peter
-
Finora l'unicomodo che hotrovatoperpassare con successo da un ambiente di sviluppo a un ambiente live è dopo avereseguitoil dump SQLpereseguire una ricercae una sostituzione sull'interofile,non solomodificare le opzioni homee siteurl.Ho avutofilein cui l'URLerapresentepiù di 1000 volte.(ancoranon so come sia riuscito ad arrivare cosìin alto :))So far the only way that I've found to successfully move from a dev environment to a live environment is after doing the SQL dump to do a search and replace on the entire file, not just change the home and siteurl options. I've had files where the URL was in there over 1000 times. (still don't know how it managed to get that high :) )
- 0
- 2011-03-13
- Rob Williams
-
@Peter,@Robgrazie ragazziper aver risposto,temevo che lafunzione di ricercae sostituzionefosse l'unica soluzione,maprima volevo chiedere.Darò un'occhiata a quella sceneggiatura.@Peter, @Rob thank you guys for answering, I was afraid that search-and-replace was the only solution but wanted to ask first. I'll take a look at that script.
- 0
- 2011-03-13
- Willington Vega
-
La cosamigliore è usare uno script come quello che ho suggerito.Sinoti che una ricercae sostituzione ditestoin un dump db rovinerài dati serializzati (specialmentetrovatiin wp_options) see quando la lunghezza delle stringhe di ricercae sostituzionenon è la stessa,poiché quei dati sonomemorizzatinel db con una specifica di lunghezza.Successo,PeterBest is to use a script like the one I suggested. Notice that a text search & replace in a db dump will screw up serialized data (especially found in wp_options) if and when the length of the search and replace strings is not the same, since that data is stored in the db with a length specification. Success, Peter
- 0
- 2011-03-14
- Peter
-
5 risposta
- voti
-
- 2016-09-02
Stavo cercando una soluzione ancheper questoe ne hotrovata una semplice.
Questo è ciò che deviinserirenel campo URL:
/index.php/internal-site-name
Funzionaperfettamente!
Imigliori saluti Chris
I was also looking for a solution for this and I found simple one.
This is what you need to place into the URL field:
/index.php/internal-site-name
It works just fine!
Best Regards Chris
-
Funziona,ma cambia anche l'URLperincludereindex.php.Nel caso di un'applicazione apagina singola con # collegamenti,prima aggiorna lapaginae poiti porta a destinazione (solo laprima volta).Anche così,unabuonaideaThis works but it also changes the url to include the index.php. In the case of a single page application with # links, it would first refresh the page and then take you to the destination (only the first time). Even so, a good idea
- 1
- 2017-03-21
- Catalin Deaconescu
-
Ho usato/qualcosa senza laparteindex.phpe sembrafunzionareI used /something without the index.php part and seems to work
- 0
- 2020-02-17
- user3808307
-
- 2017-05-03
Puoi utilizzareilfiltro
nav_menu_link_attributes
perispezionaree modificare l'attributo hrefper ciascuna voce dimenuprima che vengaemessa.In questoesempio,cerchiamotuttigli attributi href cheiniziano con
/
e in questo caso antepongono l'URL del sito ditest:function wpd_nav_menu_link_atts( $atts, $item, $args, $depth ){ if( '/' == substr( $atts['href'], 0, 1 ) ){ $atts['href'] = 'http://testserver.com/example' . $atts['href']; } return $atts; } add_filter( 'nav_menu_link_attributes', 'wpd_nav_menu_link_atts', 20, 4 );
Potresti creare un sempliceplugin con questo codicee attivarlo solo sultuo server diprova,oppure creare una sorta diflag che applichi condizionatamente questofiltro quando èpresente l'ambiente del sito diprova.
You can use the
nav_menu_link_attributes
filter to inspect and modify the href attribute for each menu item before it is output.In this example, we look for any href attributes that start with a
/
, and prepend the test site URL in that case:function wpd_nav_menu_link_atts( $atts, $item, $args, $depth ){ if( '/' == substr( $atts['href'], 0, 1 ) ){ $atts['href'] = 'http://testserver.com/example' . $atts['href']; } return $atts; } add_filter( 'nav_menu_link_attributes', 'wpd_nav_menu_link_atts', 20, 4 );
You could create a simple plugin with this code and activate it only on your test server, or create some sort of flag that conditionally applies this filter when the test site environment is present.
-
Èilmodomigliore che hotrovato!Maperfavore @Milo,cambia laterza riga con questo URL dibase wordpresspiùintelligente (prendiil site_url di wordpress): $ atts ['href']=site_url ().$ atts ['href'];That's the best way I found! But please @Milo, change the third line with this smarter wordpress base url (get's the site_url of wordpress): $atts['href'] = site_url() . $atts['href'];
- 1
- 2019-10-22
- gtamborero
-
- 2013-11-02
Su un URLpersonalizzatonella configurazione delmenu èpossibile utilizzare collegamenti relativi a [blogurl]. Il segreto èiniziare l'URL relativo con un singolo
/
. Quando un singolo/avvia l'URLpersonalizzato,il sistemanon anteporràiltipicohttp://
e quindi l'attuale URL delblog verràgeneratonell'URL di destinazione almomento dell'esecuzione.ESEMPIO
Se desideri andare allatua homepage,inserisci semplicemente/
come URLpersonalizzatoSe vuoi andare allapagina dell'indicenella cartella
bbforums
,inserisci/bbforums
come URLpersonalizzato.Questoti permette di spostare un sitoin un dominio diprova senza dover codificareilnuovoblogURLin tuttii linkpersonalizzatiperi menu.
Adesempio:
Seilmioblog èhttp://example.com
e vogliotestarloin un sottodominiohttp://test.example.com
,il sitopuòessere spostatotrateste produzione senzaproblemi dimenu utilizzando la relativa convenzione URL sopraindicata. Hotestato con successo questo approccio utilizzandoilplugin XClonerper spostareil sito.On a custom URL in the Menu setup it is possible to use relative links to the [blogurl]. The secret is to start the relative URL with a single
/
. When a single / starts the custom URL the system will not prepend the typicalhttp://
and then the current blogURL will be generated in the target URL at execution time.EXAMPLE
If you want to go to your home page, simply put/
as the custom URLIf you want to go to the index page in the folder
bbforums
then put/bbforums
as the custom URL.This allows you to move a site to a test domain without having to hard code the new blogURL in all the custom links for the menus.
For Example:
If my blog ishttp://example.com
and I want to test it in a subdomainhttp://test.example.com
the site can be moved between test and production without menu problems using the relative URL convention noted above. I have successfully tested this approach using the XCloner plugin to move the site.-
Questononfunzionapergli URL diblog che hannobarre,adesempio http://www.example.com/blog/.Seguendo la voce dimenu "/" verrai reindirizzato a http://example.com.This doesn't work for blog URLs that have slashes, for example http://www.example.com/blog/. Following the menu item '/' would just take you to http://example.com.
- 6
- 2014-10-03
- Jimbali
-
- 2017-05-03
L'uso deltag
<base href=" ">
nelmeta head fornirà un URL dibase atuttigli ancoraggi relativinellapagina.Riferimento:
https://www.w3.org/TR/html4/struct/links.html
12.4 Informazioni sulpercorso: l'elemento BASELinkpersonalizzati relativiin wordpress:
Se desideri che l'URL del sito sia l'URL dibase dituttigli ancoraggi,aggiungilo a theme/header.php all'interno di<head>
:<base href="<?php echo site_url(); ?>/">
So chepotrestiesserein ritardoperte,mapotrei aiutare qualcun altro.
Using
<base href=" ">
tag in the head meta will give a base url to all the relative anchors in the page.Reference:
https://www.w3.org/TR/html4/struct/links.html
12.4 Path information: the BASE elementRelative custom links in wordpress:
If you want the site url to be the base url of all anchors add this to the theme / header.php within the<head>
:<base href="<?php echo site_url(); ?>/">
i know could be late for you but could help someone else.
-
Sembrapromettente.Loproveròe riferirò.Looks promising. I'll test it out and report back.
- 0
- 2019-04-05
- Eric Hepperle - CodeSlayer2010
-
Nonfunziona conpercorsi come `ehepperle.com/sites/in-progress/some-wp-site-root/` ameno chenon siimpostiesplicitamente la root del sito.La velocità di sviluppo webnon ènotevolmentemigliorata usandoiltag `base`,poiché quandomigra su un altro sito,dovrai ridefinire cos'è labase.Tuttavia,posso vedereil valorenella riduzione della lunghezza dei valori href.Doesn't work with paths like `ehepperle.com/sites/in-progress/some-wp-site-root/` unless you explicitly set the site root. Web development speed is not noticeably improved using `base` tag, since when you migrate to another site, you will have to re-define what base is. However, I can see the value in reducing the length of href values.
- 0
- 2019-04-05
- Eric Hepperle - CodeSlayer2010
-
L'idea èbuonama sembra che Wordpressignoriilpercorso dibase quando si utilizzanopercorsi relativinei menupersonalizzati di wp (adesempio:/contact)The Idea is good but seems that Wordpress ignores the Base path when using relative paths on wp custom menus (for example: /contact)
- 0
- 2019-10-22
- gtamborero
-
- 2012-03-16
Perprima cosa deviinstallare questoplugin pergli shortcode URL.
Aggiungi questo codice altuofile
functions.php
neltuotema:class description_walker extends Walker_Nav_Menu { function start_el( &$output, $item, $depth, $args ) { global $wp_query; $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $class_names = $value = ''; $classes = empty( $item->classes ) ? array() : (array) $item->classes; $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ); $class_names = ' class="'. esc_attr( $class_names ) . '"'; $output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>'; $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) . '"' : ''; $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) . '"' : ''; $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) . '"' : ''; // echo $item->url; $string = explode( '::', $item->url, 3 ); if ( $string[1] ) { $string[1] = str_replace( '-', ' ', $string[1] ); $item->url = do_shortcode( "[$string[1]]" ); } $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $prepend = '<strong>'; $append = '</strong>'; $description = ! empty( $item->description ) ? '<span>' . esc_attr( $item->description ) . '</span>' : ''; if ( $depth != 0 ) { $description = $append = $prepend = ""; } $item_output = $args->before; $item_output .= '<a'. $attributes . '>'; $item_output .= $args->link_before . $prepend . apply_filters( 'the_title', $item->title, $item->ID ) . $append; $item_output .= $description . $args->link_after; $item_output .= '</a>'; $item_output .= $args->after; $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } }
Quindi devi chiamare lafunzione
wp_nav_menu
daifile deimodelli:$arg = array( 'menu' => "main-menu", 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'depth' => 0, 'walker' => new description_walker() ); wp_nav_menu( $arg );
Questo ètutto. Quindi vai alla sezione delmenu diback-end.
Adesempio,se desiderofornire l'URL dellapagina a un collegamentopersonalizzato,lo aggiungeròin questomodo:
http://::blogurl-id='1302'::
Orapuoi andare alfront-ende verificare che lo shortcodefunzioni.
First you have to install this plugin for URL shortcodes.
Add this code to your
functions.php
file in your theme:class description_walker extends Walker_Nav_Menu { function start_el( &$output, $item, $depth, $args ) { global $wp_query; $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $class_names = $value = ''; $classes = empty( $item->classes ) ? array() : (array) $item->classes; $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ); $class_names = ' class="'. esc_attr( $class_names ) . '"'; $output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>'; $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) . '"' : ''; $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) . '"' : ''; $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) . '"' : ''; // echo $item->url; $string = explode( '::', $item->url, 3 ); if ( $string[1] ) { $string[1] = str_replace( '-', ' ', $string[1] ); $item->url = do_shortcode( "[$string[1]]" ); } $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $prepend = '<strong>'; $append = '</strong>'; $description = ! empty( $item->description ) ? '<span>' . esc_attr( $item->description ) . '</span>' : ''; if ( $depth != 0 ) { $description = $append = $prepend = ""; } $item_output = $args->before; $item_output .= '<a'. $attributes . '>'; $item_output .= $args->link_before . $prepend . apply_filters( 'the_title', $item->title, $item->ID ) . $append; $item_output .= $description . $args->link_after; $item_output .= '</a>'; $item_output .= $args->after; $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } }
Then you have to call the
wp_nav_menu
function from the templates files:$arg = array( 'menu' => "main-menu", 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'depth' => 0, 'walker' => new description_walker() ); wp_nav_menu( $arg );
That's it. Then go to the back-end menu section.
For example, if I want to give the page URL to a custom link, I will add it like this:
http://::blogurl-id='1302'::
Now you can go to the front-end and check that the shortcode works.
Parte delmio lavoro consistenel creare siti Web Wordpress. Di solito lavoro sulmio laptopfinchénon ho qualcosa di abbastanzabuono daessere caricato sul server diprova doveil client loesamina.
Creo un VirtualHostper ogninuovoprogetto,quindi lavoro sempre con un'installazione di Wordpressin un dominio che assomiglia a
http://local.example.com/
,ma quandoil sito è caricato sul server diprova (non controllato dame),il dominiopotrebbefinire con qualcosa comehttp://testserver.com/arbitrary/path/example/
.Ilproblema è che se aggiungo un collegamentopersonalizzato a unmenu chepunta,adesempio,a
/events/
,funzionerebbe correttamente creando un collegamento ahttp://local.example.com/events/
,manel server ditest,il collegamentopunterà ahttp://testserver/events/
,che ovviamentenon è corretto.Quello che voglio èfornire al linkpersonalizzato un URL chefunzioni sia sulmio ambiente locale che sul server diprova.
Gestiscogiàilproblema dellamodifica delle opzioni
home
esiteurl
Wordpresstramite:Non desidero utilizzare URL completiperi collegamentipersonalizzatie doverli sostituire con l'URL del server ogni volta che devo aggiornareil database del server.
Peri link all'interno del contenuto delpost,c'è unplugin che risolveilproblema aggiungendo due shortcode: http://wordpress.org/extend/plugins/url-shortcodes/,manon sono riuscito atrovare qualcosa di simileperi linkpersonalizzati.