So fügen Sie einem Menü einen benutzerdefinierten Link mit einer URL hinzu, die relativ zur Blog-URL ist
-
-
Willington,ich kann dirnicht helfen,eine URL zufinden,die überallfunktioniert.Wasichtun kann,ist Sie auf http://spectacu.la/search-and-replace-for-wordpress-databases/zu verweisen.Ichbenutze Davids Suchen und Ersetzen seiteiniger Zeit undich arbeitegut daran,z.URLs - auchin serialisierten Daten.Somacheich das:nurfest codierte Links und Konvertierungnach dem Verschieben der Datenbankin eine andere Domain.Viel Glück,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
-
Bisher habeichfestgestellt,dass dereinzige Weg,umerfolgreich voneiner Entwicklungsumgebungin eine Live-Umgebung zu wechseln,darinbesteht,nach dem SQL-Dumpeine Suche und Ersetzungfür diegesamte Datei durchzuführen undnichtnur die Optionen home und siteurl zu ändern.Ich hatte Dateien,in denen die URL über 1000 Malenthalten war.(Ich weißimmernochnicht,wieesgeschafft hat,so hoch zu kommen :))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,@Rob,danke,dassihrgeantwortet habt. Ich hatte Angst,dass Suchen und Ersetzen dieeinzige Lösungist,wollte aber zuerstfragen.Ich werdemir das Skript ansehen.@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
-
Ambesten verwenden Sieein Skript wie das vonmir vorgeschlagene.Beachten Sie,dasseine Textsuche und -ersetzungin einem Datenbankspeicherauszug serialisierte Daten (insbesonderein wp_options) vermasselt,wenn die Länge der Such- und Ersetzungszeichenfolgennichtgleichist,da diese Datenin der Datenbankmit einer Längenangabegespeichert sind.Erfolg,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 Antworten
- Stimmen
-
- 2016-09-02
Ich habe auchnacheiner Lösung dafürgesucht undeine einfachegefunden.
Folgendesmüssen Siein das URL-Feldeinfügen:
/index.php/internal-site-name
Esfunktioniertgut!
Mitfreundlichen Grüßen 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
-
Diesfunktioniert,ändert aber auch die URL,um dieindex.phpeinzuschließen.Beieiner Einzelseitenanwendungmit # Links wird zuerst die Seite aktualisiert und Sie dann zum Zielgebracht (nurbeim ersten Mal).Trotzdemeine gute IdeeThis 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
-
Ich habe/etwas ohne denindex.php Teil verwendet und scheint zufunktionierenI used /something without the index.php part and seems to work
- 0
- 2020-02-17
- user3808307
-
- 2017-05-03
Mit dem Filter
nav_menu_link_attributes
können Sie das href-Attributfürjeden Menüpunkt überprüfen und ändern,bevores ausgegeben wird.In diesem Beispiel suchen wirnach href-Attributen,diemit einem
/
beginnen,und stellenin diesem Fall die URL der Testsite voran: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 );
Sie könnenein einfaches Pluginmit diesem Codeerstellen undesnur auf Ihrem Testserver aktivieren odereine Art Flagerstellen,das diesen Filterbedingt anwendet,wenn die Umgebung der Testsite vorhandenist.
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.
-
Dasist derbeste Weg,denichgefunden habe!Aberbitte @Milo,ändern Sie die dritte Zeilemit dieserintelligenteren WordPress-Basis-URL (erhalten Sie die site_url von 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
Untereinerbenutzerdefinierten URLim Menü-Setup können relative Links zu [blogurl] verwendet werden. Das Geheimnisbesteht darin,die relative URLmit einemeinzelnen
/
zubeginnen. Wenneine einzelne/diebenutzerdefinierte URL startet,stellt das Systemnicht dentypischenhttp://
voran,und dann wird die aktuelleblogURL zur Ausführungszeitin der Ziel-URLgeneriert.BEISPIEL
ein
Wenn Sie zu Ihrer Homepagegehenmöchten,geben Sieeinfach/
alsbenutzerdefinierte URLWenn Sie zur Indexseiteim Ordner
bbforums
wechselnmöchten,geben Sie/bbforums
alsbenutzerdefinierte URLein.Auf diese Weise können Sieeine Sitein eine Testdomäne verschieben,ohne dieneueblogURLin allenbenutzerdefinierten Linksfür die Menüsfest codieren zumüssen.
Zum Beispiel:
Wennmein Bloghttp://example.com
ist undichesin einer Subdomainhttp://test.example.com
testenmöchte,kann die Site zwischen den Tests verschoben werden und Produktion ohne Menüprobleme unter Verwendung der oben angegebenen relativen URL-Konvention. Ich habe diesen Ansatzerfolgreichmit dem XCloner-Plugingetestet,um die Site zu verschieben.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.-
Diesfunktioniertnichtfür Blog-URLsmit Schrägstrichen,z. B. http://www.example.com/blog/.Wenn Sie dem Menüpunkt '/'folgen,gelangen Sieeinfach zu 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
Wenn Sie das
<base href=" ">
-Tagim Kopf-Meta verwenden,erhalten alle relativen Anker auf der Seiteeine Basis-URL.Referenz:
https://www.w3.org/TR/html4/struct/links.HTML
12.4 Pfadinformationen: das BASE-ElementRelativebenutzerdefinierte Linksin WordPress:
hinzu
Wenn Siemöchten,dass die Site-URL die Basis-URL aller Ankerist,fügen Sie diese dem theme/header.php im<head>
:<base href="<?php echo site_url(); ?>/">
Ich weiß,dasses zu spätfür Sie sein könnte,aberjemand anderem helfen könnte.
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.
-
Sieht vielversprechend aus.Ich werdeestesten und zurückmelden.Looks promising. I'll test it out and report back.
- 0
- 2019-04-05
- Eric Hepperle - CodeSlayer2010
-
Funktioniertnichtmit Pfaden wie "ehepperle.com/sites/in-progress/some-wp-site-root/",es sei denn,Sie legen den Site-Stammexplizitfest.Die Geschwindigkeit der Webentwicklung wirdmit dem Tag "base"nichtmerklich verbessert,da Siebei der Migration aufeine andere Site die Basisneu definierenmüssen.Ich kann den Wertjedoch darin sehen,die Länge der href-Werte zu reduzieren.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
-
Die Ideeistgut,aberes scheint,dass Wordpress den Basispfadignoriert,wenn relative Pfadein benutzerdefinierten wp-Menüs verwendet werden (zum Beispiel:/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
Zuerstmüssen Sie dieses Plugin für URL-Shortcodesinstallieren.
Fügen Sie diesen Code Ihrer Datei
functions.php
in Ihrem Thema hinzu: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 ); } }
Dannmüssen Sie die Funktion
wp_nav_menu
aus den Vorlagendateien aufrufen:$arg = array( 'menu' => "main-menu", 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'depth' => 0, 'walker' => new description_walker() ); wp_nav_menu( $arg );
Das war's. Gehen Sie dann zum Back-End-Menü.
Wennichbeispielsweise die Seiten-URLeinem benutzerdefinierten Link zuweisenmöchte,fügeich siefolgendermaßen hinzu:
http://::blogurl-id='1302'::
Jetzt können Sie zum Front-Endgehen und überprüfen,ob der Shortcodefunktioniert.
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.
Ein Teilmeiner Arbeitbesteht darin,Wordpress-Websites zuerstellen. Normalerweise arbeiteich anmeinem Laptop,bisichetwas habe,dasgutgenugist,um auf den Testserver hochgeladen zu werden,auf dem der Clientes überprüft.
Icherstelleeinen VirtualHostfürjedesneue Projekt,daher arbeiteichimmermit einer Wordpress-Installationin einer Domäne,die wie
http://local.example.com/
aussieht,aber wenn sich die Sitebefindet Auf den Testserver hochgeladen (nicht vonmir kontrolliert),könnte die Domain soetwas wiehttp://testserver.com/arbitrary/path/example/
sein.Das Problemist,dass wennicheinem Menüeinen benutzerdefinierten Link hinzufüge,derbeispielsweise auf
/events/
verweist,dies lokalgutfunktioniert,wennein Link zuhttp://local.example.com/events/
,aber auf dem Testserver verweist der Link aufhttp://testserver/events/
,was offensichtlichnicht richtigist.Ichmöchte dembenutzerdefinierten Linkeine URLgeben,die sowohlin meiner lokalen Umgebung als auch auf dem Testserverfunktioniert.
Ich habebereits das Problem,die Wordpress-Optionen
home
undsiteurl
zu ändern,durch:Ichmöchte keine vollständigen URLsfür diebenutzerdefinierten Links verwenden und diesejedes Mal durch die Server-URLersetzenmüssen,wennich die Datenbank des Servers aktualisierenmuss.
Für Linksinnerhalb des Post-Inhaltsgibt esein Plugin,das das Problembeim Hinzufügen von zwei Shortcodes löst: http://wordpress.org/extend/plugins/url-shortcodes/,aberich konntefürbenutzerdefinierte Linksnichts Ähnlichesfinden.