web-dev-qa-db-fra.com

désactiver le lien permanent sur le type de message personnalisé

J'ai créé un type de message personnalisé, mais je ne veux pas qu'il ait un lien permanent. Par défaut, après avoir saisi le titre du post, il crée un lien permanent. Je ne les fais pas générer.

D'après mes lectures, il est dit que le type de message personnalisé aura un lien permanent et qu'il est impossible de le désactiver. Est-il possible d'empêcher l'appel ajax qui reçoit le lien perma?.

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;
    }

Cela supprimera:

  • Permalink lui-même
  • Bouton Afficher le message
  • Bouton Obtenir un lien court

Si vous souhaitez supprimer uniquement le lien permanent, remplacez la ligne contenant preg_replace par

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

METTRE À JOUR:

get_sample_permalink_html a changé dans la version 4.4.

Voici le code mis à jour et testé:

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

Bien que la réponse acceptée semble cacher uniquement le lien permanent, mais qu'elle soit toujours générée et accessible, vous pouvez désactiver le lien permanent pour qu'il soit visible et accessible en définissant certains paramètres register_post_types.

J'ai obtenu ce dont j'avais besoin en définissant uniquement les éléments suivants, mais en fonction de votre cas particulier, vous souhaiterez peut-être ajuster certains des paramètres autres .

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

Plus: https://wordpress.stackexchange.com/a/108658/33056

3
user33056