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.

Forçar Fluxo
fonte

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)

Dave Hunt
fonte
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

Marfarma
fonte