WPML
Status
Warten auf Autor
Zugehöriges Plugin/Theme
Custom Permalinks
Themen-Tags
Compatibility

Übersicht über das Problem

Bei der Verwendung von Custom Permalinks mit WPML können interne Links zu übersetzten Seiten auf die Seite in der Originalsprache statt auf die übersetzte Seite verweisen, wenn die Zielseite einen benutzerdefinierten Permalink verwendet.

Problemumgehung

Bitte erstellen Sie ein vollständiges Backup Ihrer Website, bevor Sie fortfahren.

Problemumgehung – Teil I


  • Öffnen Sie die Datei …/wp-content/plugins/custom-permalinks/includes/class-custom-permalinks-frontend.php.

  • Suchen Sie nach Zeile 165.

  • Ersetzen Sie:
    	public function wpml_permalink_filter( $permalink, $language_code ) {
    		$custom_permalink   = $permalink;
    
            


  • Durch:
    	public function wpml_permalink_filter( $permalink, $language_code ) {
    		$custom_permalink   = $permalink;
    		$language_code = apply_filters( 'wpml_current_language', NULL ); 
            

Problemumgehung – Teil II


  • In derselben Datei (class-custom-permalinks-frontend.php).

  • Suchen Sie nach Zeile 913.

  • Ersetzen Sie:
    	public function custom_page_link( $permalink, $page ) {
    		$custom_permalink = get_post_meta( $page, 'custom_permalink', true );
    		if ( $custom_permalink ) {
    			$language_code = apply_filters(
    				'wpml_element_language_code',
    				null,
    				array(
    					'element_id'   => $page,
    					'element_type' => 'page',
    				)
    			);
    
    			$permalink = $this->wpml_permalink_filter(
    				$custom_permalink,
    				$language_code
    			);
    
            


  • Durch:
    		public function custom_page_link( $permalink, $page ) {
    		$custom_permalink = get_post_meta( $page, 'custom_permalink', true );
    		if ( $custom_permalink ) {
    			$language_code = apply_filters(
    				'wpml_element_language_code',
    				null,
    				array(
    					'element_id'   => $page,
    					'element_type' => 'page',
    				)
    			);
    			$page_translated = apply_filters(
    				'wpml_object_id',
    				$page,
    				'page',
    				$language_code
    			);
    			$custom_translated_permalink = get_post_meta( $page_translated, 'custom_permalink', true );
    			if ( $custom_translated_permalink ) {
    				$custom_permalink = $custom_translated_permalink;
    			}
    			$permalink = $this->wpml_permalink_filter(
    				$custom_permalink,
    				$language_code
    			);
    
            

Alle bekannten Probleme →