Dezactivarea permalink-urilor pentru tipuri de postări personalizate

15 mar. 2013, 16:46:31
Vizualizări: 24.1K
Voturi: 6

Am creat un tip de postare personalizat, dar nu vreau să aibă permalink. În mod implicit, după introducerea titlului postării, se creează un permalink. Nu am nevoie ca acestea să fie generate.

Din documentația studiată, se spune că tipurile de postări personalizate vor avea întotdeauna un permalink și nu există o modalitate de a le dezactiva. Există totuși vreo modalitate prin care pot preveni apelul ajax care generează permalink-ul?

2
Comentarii

Vrei să ascizi legătura permanentă de sub titlul articolului pe pagina de Editare Postare? Am înțeles corect?

Max Yudin Max Yudin
15 mar. 2013 17:02:31

da, o pot ascunde cu css, dar vreau să o dezactivez ca să nu fie nevoie să folosesc css. Dacă aș putea dezactiva apelul ajax ar fi cel mai bine

meWantToLearn meWantToLearn
15 mar. 2013 17:12:16
Toate răspunsurile la întrebare 3
2

În timp ce răspunsul acceptat pare doar să ascundă legătura permanentă (permalink) fără a o elimina complet (aceasta fiind în continuare generată și accesibilă), puteți dezactiva afișarea și accesul la legătura permanentă prin setarea anumitor parametri în register_post_types.

Am obținut ceea ce aveam nevoie prin setarea următoarelor, dar în funcție de cazul dumneavoastră specific, este posibil să doriți să ajustați unii dintre ceilalți parametri.

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

Mai multe detalii: https://wordpress.stackexchange.com/a/108658/33056

6 apr. 2017 08:03:26
Comentarii

În general, ai perfectă dreptate, dar răspunsul este dat conform comentariului de modificare al OP.

Max Yudin Max Yudin
7 apr. 2017 15:36:51

acesta răspunde perfect la întrebare. a crea o funcție suplimentară doar pentru a ascunde un div de permalink este definiția supremă a nebuniei

Zach Smith Zach Smith
5 sept. 2017 19:45:14
4
<?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;
    }

Acest lucru va elimina:

  • Permalink-ul în sine
  • Butonul "Vezi Postarea"
  • Butonul "Obține Link Scurt"

Dacă doriți să eliminați doar permalink-ul, înlocuiți linia care conține preg_replace cu:

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

ACTUALIZARE:

get_sample_permalink_html s-a schimbat în versiunea 4.4.

Iată codul actualizat și testat:

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;
}
15 mar. 2013 17:26:07
Comentarii

nu a funcționat pentru mine - dar am făcut să returneze '' și atunci a funcționat. Nu știu care sunt implicațiile acestui lucru însă.

Jacob Raccuia Jacob Raccuia
22 nov. 2014 00:59:23

Da, asta nu funcționează.

Brett Brett
15 ian. 2016 04:13:32

Ciudat, funcționa pentru mine înainte. Oricum, trebuie modificat pentru a respecta cerințele WP 4.4. Am actualizat codul.

Max Yudin Max Yudin
18 ian. 2016 17:35:25

Acest răspuns pare doar să ascundă legătura permanentă de la afișare, dar nu este complet dezactivată

User User
6 apr. 2017 07:56:35
0

După cum sugerează documentația WordPress, pur și simplu dezactivează argumentul public al tipului de post înregistrat.

Acest lucru va avea ca efect dezactivarea următoarelor argumente, doar dacă nu sunt specificate altfel:

  • exclude_from_search
  • publicly_queryable
  • show_in_nav_menus
  • show_ui

Astfel, nu vei mai avea posibilitatea să accesezi pagina singulară, iar permalink-ul nu va mai fi afișat în administrare, iar butoanele "vizualizare" vor fi ascunse.

PS: Răspunsul selectat arată ceea ce nu ar trebui făcut atunci când vine vorba de dezvoltarea WordPress, într-un mod prost. Nu este nevoie să alterezi randarea unui HTML și/sau să scrii cod, deoarece există o API WordPress integrată pentru Tipuri de Post pentru asta. Așadar, te rog să iei în considerare răspunsul meu, deoarece îndeplinește toate cerințele întrebării și este simplu și direct la obiect, cu o soluție integrată.

14 sept. 2020 17:34:17