web-dev-qa-db-fra.com

Masquer le lien permanent et le bouton de prévisualisation ainsi que le lien sur un message personnalisé

quelqu'un sait comment personnaliser une boîte contenant "Publish,save draft,and preview button"? Je vais cacher tous les boutons sauf le bouton Publier. et même que "change permalink" aussi "view,delete,edit" lien dans post comment masquer le lien permanent et afficher le lien?

voici l'illustration dont je parle.

Personnalisation du bouton Publier à partir de Wordpress original

enter image description hereenter image description here

Personnalisation du lien de post à partir du wordpress original

enter image description hereenter image description here

supprimer le permalien sous wordpress post title

enter image description here

6
user3073032

Vous pouvez accomplir ce qui précède en utilisant des crochets. Utilisez le code ci-dessous dans le fichierfunctions.phpde votre thème actif pour obtenir ce travail.

supprimer le permalien sous wordpress post title

add_filter( 'get_sample_permalink_html', 'wpse_125800_sample_permalink' );
function wpse_125800_sample_permalink( $return ) {
    $return = '';

    return $return;
}

Personnalisation du lien de post à partir du wordpress original

add_filter( 'page_row_actions', 'wpse_125800_row_actions', 10, 2 );
add_filter( 'post_row_actions', 'wpse_125800_row_actions', 10, 2 );
function wpse_125800_row_actions( $actions, $post ) {
    unset( $actions['inline hide-if-no-js'] );
    unset( $actions['view'] );

    return $actions;
}

Personnalisation du bouton Publier à partir de Wordpress original

Ci-dessous, il y a place à l'amélioration. Je ne pouvais pas obtenir les crochets pour effectuer les opérations suivantes. Nous avons donc utilisé le moyen CSS pour le cacher.

global $pagenow;
if ( 'post.php' == $pagenow || 'post-new.php' == $pagenow ) {
    add_action( 'admin_head', 'wpse_125800_custom_publish_box' );
    function wpse_125800_custom_publish_box() {
        if( !is_admin() )
            return;

        $style = '';
        $style .= '<style type="text/css">';
        $style .= '#edit-slug-box, #minor-publishing-actions, #visibility, .num-revisions, .curtime';
        $style .= '{display: none; }';
        $style .= '</style>';

        echo $style;
    }
}

REMARQUES

Déclaration conditionnelle supplémentaire dans mon cas, ici j'ai déjà résolu pour la déclaration conditionnelle

global $pagenow;
if( 'edit.php' == $pagenow && isset($_GET['page_type']) == 'my-custom-post' ){
     // here i use delete post row function that explained by Maruti Mohanty on my custom post 
}

également instruction conditionnelle pour l'ajout de nouveaux paramètres de publication et de publication personnalisés de metabox

global $pagenow;
    if( 'page-new.php' == $pagenow && isset($_GET['page_type']) == 'my-custom-post' ){
         // here i use add new post and custom publish metabox function
    }

laissez-moi savoir s'il y a une autre explication.

merci!

9
Maruti Mohanty

Je suis juste tombé sur cette question et je pensais partager ma solution la plus commune, qui peut ne pas fonctionner pour tout le monde dans tous les scénarios, mais je pense que c'est le moyen le plus efficace d'atteindre les résultats souhaités.

Lorsque vous enregistrez un CPT ne nécessitant pas de sortie à vue unique dans votre thème ou plug-in, définissez simplement la propriété 'public' => false,

Par exemple, une inscription CPT typique pourrait ressembler à ceci:

<?php 

/**
 * Custom Post Type: cw-programs (programs)
 * Theme: Your Custom Theme
 * Desc: A custom WP theme
 *
 * @package custom-wp-theme
 * @since   1.0.0
 * @version 1.0.0
 */
function mycpt_content_type_name() {
  $labels = array(
    'name' => __( 'My CPT'),
    'singular_name' => __( 'My CPT' ),
    'add_new' => _x('Add New', 'My CPT'),
    'add_new_item' => __('Add New My CPT'),
    'edit_item' => __('Edit My CPT'),
    'new_item' => __('New My CPT'),
    'view_item' => __('View My CPT'),
    'search_items' => __('Search My CPT'),
    'not_found' =>  __('No My CPT found'),
    'not_found_in_trash' => __('No My CPT found in Trash'), 
    );
    $args = array(
    'labels' => $labels,
    'menu_icon' => 'dashicons-clipboard',
    'public' => false,
    'publicly_queryable' => false,
    'show_ui' => true, 
    'query_var' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => null,
    'rewrite' => array('slug' => __( 'mycpt' )),
    'supports' => array('title', 'editor'),
    'show_in_menu' => false
    ); 

    register_post_type(__( 'cw-program' ),$args);
}

add_action( 'init', 'mycpt_content_type_name' );

En un coup, cela devrait supprimer les liens de vue, slug et changements de prévisualisation de tous les écrans d'administration associés. J'aime cette solution, car elle ne nécessite aucune fonction supplémentaire et que la logique est définie au même endroit que votre cpt (évidemment). J'espère que cela aidera les autres, à la recherche d'une solution similaire.

11
derekshirk

Nous pouvons supprimer les champs Prévisualisation, affichage et permaliens du message en définissant public_queryable argument sur false.

 setting **publicly_queryable** argument to false 

1
Fahid Javid