web-dev-qa-db-fra.com

Statut et aperçu de la publication personnalisée

J'utilise wordpress 3.4 (le dernier avant 3.5) et j'ai déclaré un type d'état de publication et un rôle d'utilisateur personnalisé appelé agent . C'est pour un type d'article personnalisé, propriété .

  register_post_status( 'purchased', array(
      'label' => _x( 'Purchased', 'post' ),
      'public' => false,
      'exclude_from_search' => true,
      'show_in_admin_all_list' => true,
      'show_in_admin_status_list' => true,
      'label_count'               => _n_noop( 'Purchased <span class="count">(%s)</span>', 'Purchased <span class="count">(%s)</span>' ),
  ) );

Mon problème est que je ne veux pas montrer publiquement ceux-ci (donc public=false), mais lorsque j'essaie de les prévisualiser avec mon utilisateur (en admin), il dit:

Vous n'êtes pas autorisé à prévisualiser les brouillons.

EDIT 1

Mon code pour l'aperçu est le suivant:

$nonce = wp_create_nonce('post_preview_' . $post->ID);
$url = esc_url(add_query_arg(array( 'preview' => 'true', 'preview_id' => $post->ID, 'preview_nonce' => $nonce), get_permalink($post->ID)));
$previewUrl = "<a href=\"" . $url . "\" class=\"btn btn-info btn-mini\" target=\"wp-preview\" title=\"" . esc_attr(sprintf(__('Preview %s'), get_the_title())) . "\" rel=\"permalink\">" . __('Preview') . "</a>";

Félicitations à Jesse pour avoir remarqué l'erreur, mais maintenant, quand je vais au lien de prévisualisation, j'obtiens une erreur 404 (non trouvée). Avec public = true, cela ne se produit pas, mais il revient à la catégorie NE PAS INDIQUER.

3
Panagiotis

Donc, en réalité, tout était plus simple, tant que quelqu'un (à savoir moi) aurait regardé comment le statut de poste "brouillon" fonctionnait.

Apparemment, il y a beaucoup de variables que wordpress codex ne révèle pas/n'a documentées, telles que:

register_post_status('purchased', array(
    /* 'label' => _x( 'Purchased', 'post' ),
      'public' => false,
      'exclude_from_search' => true,
      'show_in_admin_all_list' => true,
      'show_in_admin_status_list' => true,
      'label_count'               => _n_noop( 'Purchased <span class="count">(%s)</span>', 'Purchased <span class="count">(%s)</span>' ), */
    'label' => _x('Purchased', 'post'),
    'protected' => true,
    '_builtin' => true, /* internal use only. */
    'label_count' => _n_noop('Purchased <span class="count">(%s)</span>', 'Purchased <span class="count">(%s)</span>'),**
));

J'ai pris le code de "brouillon" (nous savons tous que cela fonctionne en fait) et je l'ai dupliqué pour mon statut de message personnalisé. Par conséquent, il est maintenant visible pour le propriétaire, mais invisible pour les autres (sur le front-end). Une fois publié, cela fonctionne très bien.

1
Panagiotis