2017-04-18 6 views
-2

Ich möchte alle Bindestriche/Bindestriche aus dem benutzerdefinierten Beitragstyp Permalink in Wordpress entfernen.Bindestrich/Bindestrich entfernen aus Wordpress CustomPosttype Permalink

Zum Beispiel:

www.website.com/customposttype/ postname/

Becomes:

www.website.com/customposttype/ postname/

Ich möchte automatische Lösung für zukünftige und alte Beiträge.

Irgendwelche Ratschläge, wie man das mit irgendwelchen Funktionen macht.

Dank

+0

Sie wollen automatische Lösung für die Zukunft und alten Beiträge? Wenn es nur nicht viele Beiträge sind, können Sie einfach die Schnecken bearbeiten, Leerzeichen entfernen, so dass keine Bindestriche ... – Mohsin

+0

Ich möchte automatische Lösung für zukünftige und alte Beiträge – sarun

Antwort

0

Sie verwenden müssen, um in Wordpress die sanitize Titel Haken einzuhaken.

function no_dashes($title) { 
    return str_replace('-', '', $title); 
} 
add_filter('sanitize_title', 'no_dashes' , 9999); 

Es entfernt die Bindestriche von der URL. Es funktioniert jedoch nur, wenn Sie einen Beitrag speichern. Das ist für neue Beiträge, es wird gut funktionieren. Aber für bestehende Posts musst du gehen und/update/save bearbeiten, um das zu ermöglichen.

TODO: Auch müssen Sie nach Custom Post Type auch überprüfen, so dass es nicht für alle Post-Typen gilt.

UPDATE: Ich dachte, Hinzufügen post_type Check wäre einfacher, daher habe ich oben TODO hinzugefügt, aber Sie haben Recht sieht aus, als ob wir keine Daten in Bezug auf die Filter Hook ich verwendet haben.

Dafür bitte diesen Code verwenden und sehen, ob es funktioniert:

function no_dashes($slug, $post_ID, $post_status, $post_type) { 

    if($post_type == "page") { 
     $slug = str_replace('-', '', $slug); 
    } 
    return $slug; 
} 
add_filter("wp_unique_post_slug", "no_dashes", 10, 4); 
+0

funktioniert für alle Post-, Seiten-und benutzerdefinierten Beitragstyp Ich möchte Strich entfernen nur in benutzerdefinierten Beitragstyp, wie das zu tun – sarun

+0

@sarun Überprüfen Sie den aktualisierten Code und sehen, ob es funktioniert für dich. – Mohsin

+0

ja seine Arbeit danke – sarun

0

Warnung, müssen Striche und Bindestriche nur in UTL Pfad entfernt werden, nicht in der Domäne. Deshalb habe ich so etwas tun würde:

Etwas wie folgt aus:

// This is our sample url, I just add a hyphen in domain name to ensure it won't be replaced 
$url = "http://www.my-website.com/customposttype/post-name/foo_bar/"; 

// We use native php url parser to extract url path 
$parsed_url = parse_url($url); 
$url_path = $parsed_url["path"]; 

// Then, we replace dashes and hyphens in this path using a simple regular expression 
$url_path = preg_replace('/(-|_)/', '', $url_path); 

// Finally we rebuild a new url from the original one by replacing the path with the new one 
$new_url = $parsed_url["scheme"].$parsed_url["host"].$url_path; 

Demo

+0

Entfernen nur Bindestriche auf PHP-Ebene wird alle WP-Links dieser zu brechen Beiträge, wenn es nicht auf WP-Ebene getan wird ... – Mohsin

Verwandte Themen