2017-04-18 8 views
-2

Wordpressのカスタムポストタイプpermalinkからハイフン/ハイフンをすべて削除します。例えばダッシュ/ハイフンをWordpressから削除するCustomPosttype Permalink

www.website.com/customposttype/ postname/

は次のようになる。

www.website.com/customposttype/ postname/

私は将来と古い投稿のための自動解決をしたい。

これをどのように機能させるかに関するアドバイス。

おかげ

+0

あなたは将来、古い記事の自動解決をしたいですか?投稿数が多すぎる場合は、手動で簡単にスラッグを編集し、空白を削除してダッシュを入れないようにすることができます... – Mohsin

+0

私は将来の投稿と古い投稿の自動解決が必要です – sarun

答えて

0

:このような

何か:私はこのような何かをするだろう理由です 。

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

URLからダッシュが削除されます。しかし、それはあなたが投稿を保存するときにのみ動作します。それは新しい投稿のためだけにうまくいくでしょう。しかし、既存の投稿については、編集/ヒット・アップデート/セーブが必要です。

TODO:カスタムポストタイプもチェックする必要があるため、すべてのポストタイプに適用されるわけではありません。

更新:私はpost_typeチェックを追加する方が簡単なので、TODOの上に追加したと思っていますが、私が使用したフィルターフックに関連するデータはありません。そのために

このコードを使用して、それが動作するかどうかを確認してください。

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

すべての投稿、ページ、およびカスタム投稿タイプのために働いています。カスタム投稿タイプのみからダッシュを削除しますか? – sarun

+0

@sarun更新されたコードをチェックし、あなたのために。 – Mohsin

+0

はいその作業ありがとう – sarun

0

警告、ダッシュとハイフンだけではないドメインで、UTLパスで削除する必要があります。あなたはWordPressのサニタイズタイトルフックにフックするために使用する必要がある

// 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

PHPレベルでダッシュを削除すると、投稿がWPレベルで行われていない場合... – Mohsin

関連する問題