Remover Slug do Tipo Personalizado do Tipo Personalizado em 404
3 respostas
- votos
-
- 2018-01-27
O registro dotipo depostagempersonalizadoe amodificação do Permalinkestá OK. Oproblema é com as regras do WordPress Rewrite quemais do queprovavelmente corresponderá ao URL "limpo" de seus links simplesparapáginase ele definirá o
pagename
consulta VAR NOTComo seu Change_slug_struct ()
função assumida.Portanto,altere afunçãoparaissopara contabilizartodos os casos:
Função Change_SLUG_STRICT ($ consulta) { if (! $ query- >is_main_query ()|| 2!=Contagem ($ query- > consulta)||!isiset ($ query- > consulta ['página']) { Retorna; } if (! vazio ($ query- > consulta ['nome'])) { $ query- > set ('post_type',array ('post','link único','página')); }elseif (! vazio ($ query- > consulta ['pagename']) & amp; & amp;false===strpos ($ query- > consulta ['pagename'],'/')) {/') { $ query- > set ('post_type',array ('post','link único','página')); //Tambémprecisamos definir onome da consulta desde Redirect_guess_404_permalink () depende disso. $ query- > set ('nome',$ query- > consulta ['pagename']); } } add_action ('pre_get_posts','troca_slug_struct');
The registering of the custom post type and the permalink modification is OK. The problem is with the WordPress rewrite rules that more than likely will match the "cleaned up" URL of your simple links to pages and it will set the
pagename
query var notname
as yourchange_slug_struct()
function assumed.So change the function to this to account for all cases:
function change_slug_struct( $query ) { if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) { return; } if ( ! empty( $query->query['name'] ) ) { $query->set( 'post_type', array( 'post', 'single-link', 'page' ) ); } elseif ( ! empty( $query->query['pagename'] ) && false === strpos( $query->query['pagename'], '/' ) ) { $query->set( 'post_type', array( 'post', 'single-link', 'page' ) ); // We also need to set the name query var since redirect_guess_404_permalink() relies on it. $query->set( 'name', $query->query['pagename'] ); } } add_action( 'pre_get_posts', 'change_slug_struct' );
-
Isso ajudou,nem preciseimudar ou refrescar aspermalinks.Obrigado!!that helped, I didn't even need to change or refresh the permalinks. Thank you!!
- 0
- 2018-01-29
- Paranoia
-
quenãofuncionou completamente,seeutiver umapágina com umpai (porexemplo,domain.com/parent/page) Eu recebo um 404. Seeumudarpara o domain.com/page (sem opai),entãoelefuncionanovamente.Algumaideia do queissopoderia ser?that didn't fully work, if I have a page with a parent (eg. domain.com/parent/page) i get a 404. If I change it to domain.com/page (without the parent) then it works again. Any idea what this could be?
- 0
- 2018-01-29
- Paranoia
-
Eu voumudarisso de voltapara a resposta correta,setivermos uma solução.Infelizmenteeuestoupreso :(I'll change this back to the correct answer, if we have a solution. Unfortunately I am stuck :(
- 0
- 2018-01-30
- Paranoia
-
sim.Eunãotenhoem conta o casoem que hápáginasinfantis.Como o seutipo depostagempersonalizadonão é hierárquico,é seguroexcluir casos quando hápáginaspara crianças.Eumodifiqueiminha resposta.Deixe-me saber sefuncionae não seesqueça de comercializá-lo como a resposta certa.Yes. I haven't taken into account the case where there are child pages. Since your custom post type is not hierarchical, it is safe to exclude cases when there are child pages. I have modified my answer. Do let me know if it works and don't forget to market it as the right answer.
- 0
- 2018-01-30
- Vlad Olaru
-
você é umgénio!!you're a genius!!
- 0
- 2018-01-30
- Paranoia
-
- 2018-01-23
Vocêtem que alterar aestrutura Perma.Porpadrão,apostagem do seutipo depostpersonalizado seráencontrada apenas com o URLinicia com oprefixo SLUG.Ao alterar oprefixo,vocêteráproblemas semelhantes quando aexclusão, Dê uma olhadanestepost .
Para obter a remoção doprefixo dotipo Post Type,você deve ligarem
single-link_rewrite_rules
e itente através dessas regrase remova oprefixo látambém.Nota: alteraçõesnaestrutura Permapodem causar conflitos de URL.
You have to alter the perma structure. By default your custom post type's post will only be found wenether the url starts with the slug prefix. When changing the prefix you will have similar issues as when deleting it, have a look at this post.
To achieve removal of the post type slug prefix you should hook into
single-link_rewrite_rules
and iterate through those rules and remove the prefix there as well.Note: changes in the perma structure may cause url conflicts.
-
@Paranoianão 100% de certeza do que você quer dizer com "Usar otipo depágina".Mas com o [`rewrite_rules_array`] (https://codex.wordpress.org/plugin_api/filter_reference/rewrite_rules_array)gancho vocêpode acessartodas as regras.@Paranoia not 100% sure what you mean with "use the page type". But with the [`rewrite_rules_array`](https://codex.wordpress.org/Plugin_API/Filter_Reference/rewrite_rules_array) hook you can access all rules.
- 0
- 2018-01-24
- Fleuv
-
- 2020-07-22
para váriostipos depostagempersonalizados ajustar comoeste
$query->set( 'post_type', array( 'post', 'custom1', 'page' ) && array( 'post', 'custom2', 'page' ) );
For multiple Custom Post Types adjust like this
$query->set( 'post_type', array( 'post', 'custom1', 'page' ) && array( 'post', 'custom2', 'page' ) );
Euestoutrabalhandoem umplugin que cria listas. Depois de criar uma lista,eu queria remover a lesma da URL
Tipo depostagem:
Remova a lesma da URL:
(este código é de aqui )
Agora depois debaterpublicação,a lesma/link single/éexcluída,mas sempre recebemos um 404 ao visitar apágina. Alterar/re-salvar ospermalinksnão ajudou. O queestoufazendoerrado?