Tipo de postagem personalizada - campo do pedido


13

Em um tipo de postagem personalizado, existe uma maneira de incluir o campo "pedido" disponível para páginas?

Existe alguma lógica interna que impeça valores duplicados no campo "pedido"?

A idéia é poder classificar um tipo de postagem personalizado por um pedido especificado pelo usuário e, em seguida, alfabeticamente por um campo personalizado baseado em string.


Respostas:


24

Ao declarar seu tipo de postagem personalizado usando a função register_post_type, você deve adicionar 'page-attribute' ao campo de suporte, como no exemplo a seguir:

register_post_type('myposttype', array(
    'supports' => array('title', 'editor', 'page-attributes'),
    'hierarchical' => false
));

Você precisará adicionar outras meta boxes suportadas, bem como o campo 'support', consulte http://codex.wordpress.org/Function_Reference/register_post_type para obter mais informações sobre os campos register_post_type.

Além disso, até onde eu sei, não existe uma maneira integrada de impedir duas da mesma ordem, isso ocorre porque você pode criar uma sub-ordem com base na hierarquia (para que um grupo de páginas filhas possa ter uma ordem diferente da outra)


usando page-attributesapresenta o ordercampo e o parentcampo. Como faço para me livrar do parentcampo?
— Force Flow

Deixa pra lá. Definir hierarchicalcomo false se livra disso.
— Force Flow

Meu mal, não sabia que você também não queria os pais da página. Vou atualizar minha resposta para excluí-la.
— Dave Hunt

Oi. Eu tenho esse código, mas não vejo nada: `` // Tipo de postagem personalizada de serviço add_action ('init', 'create_post_type'); função create_post_type () {$ support_args = array ('title', 'editor', 'page-attribute'); register_post_type ('service', array ('labels' => array ('name' => __ ('Services'), 'singular_name' => __ ('Service'), 'suporta' => $ suportes_args, 'hierárquico' => false), 'public' => true, 'has_archive' => true, // 'menu_position' => 2)); } ``
— Sylar

@ Silar Eu sei que isso é muito tarde, mas parece-me que o seu 'suportes' => $ suportes_args, 'hierárquico' => falso está na parte errada da matriz. Você tem que aninhada sob a matriz de etiquetas no seu exemplo, ele deve estar na matriz base, no mesmo nível como 'público' => true
— Dave Hunt

4

Além da resposta de @ Dave-Hunt, você também pode adicionar um filtro, como o seguinte, para definir uma ordem personalizada - nesse caso, alfabética por título. (Codifique graças à postagem do blog de Mark Leong. ) Remova a is_admin()verificação, se você desejar encomendar custom_by no front-end também.

função set_custom_post_types_admin_order ($ wp_query) {
  if (is_admin ()) {

    // Obtenha o tipo de postagem da consulta
    $ post_type = $ wp_query-> query ['post_type'];

    if ($ post_type == 'POST_TYPE') {

      // o valor 'orderby' pode ser qualquer nome de coluna
      $ wp_query-> set ('orderby', 'title');

      // o valor 'order' pode ser ASC ou DESC
      $ wp_query-> set ('ordem', 'ASC');
    }
  }
}
add_action ('pre_get_posts', 'set_custom_post_types_admin_order');

Atualizar

Para validação de pré-salvamento, consulte esta resposta: /wordpress//a/40095/4645, onde são discutidas suas opções. Basicamente, tudo se resume ao jQuery personalizado, pois o WordPress não possui ganchos de pré-salvamento.

Além disso (duplicando meu comentário anterior aqui para referência futura), veja como expor o campo 'ordem dos menus' no administrador, para que seja editável pelo usuário, assim como para as páginas: Adicionando a coluna 'ordem dos menus' à tela de administrador do tipo de postagem personalizada

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.