web-dev-qa-db-ja.com

カスタム投稿タイプのパーマリンクを無効にする

カスタム投稿タイプを作成しましたが、固定リンクを付けたくありません。デフォルトでは、役職を入力すると、パーマリンクが作成されます。それらは生成されません。

私の読書から、それはカスタム投稿タイプは、パーマリンクを持つことになると言われ、それを無効にする方法はありません。パーマリンクを受け取るajax呼び出しを防ぐことができる方法はありますか。

3
meWantToLearn
<?php
    add_filter('get_sample_permalink_html', 'my_hide_permalinks');
    function my_hide_permalinks($in){
        global $post;
        if($post->post_type == 'my_post_type')
            $out = preg_replace('~<div id="edit-slug-box".*</div>~Ui', '', $in);
        return $out;
    }

これは削除します:

  • パーマリンク自体
  • 投稿表示ボタン
  • [ショートリンクを取得]ボタン

パーマリンクのみを削除したい場合は、preg_replaceを含む行を次のように置き換えます。

$out = preg_replace('~<span id="sample-permalink".*</span>~Ui', '', $in);

更新:

get_sample_permalink_htmlはバージョン4.4で変更されました。

これが更新されテストされたコードです。

add_filter('get_sample_permalink_html', 'my_hide_permalinks', 10, 5);

function my_hide_permalinks($return, $post_id, $new_title, $new_slug, $post)
{
    if($post->post_type == 'my_post_type') {
        return '';
    }
    return $return;
}
7
Max Yudin

受け入れられた答えはパーマリンクを表示から隠すだけですが、それでも生成されてアクセス可能であるように見えますが、特定のregister_post_typesパラメータを設定することによってパーマリンクを表示からアクセス不可能にすることができます。

私は以下を設定するだけで私が必要としたことを達成しました、しかしあなたの特定のケースに応じて、あなたは 他のパラメータ のいくつかを調整したいかもしれません。

'public' => false,
'show_ui' => true

もっと: https://wordpress.stackexchange.com/a/108658/33056

3
user33056