web-dev-qa-db-fra.com

Changer le post-état de WordPress dans la zone d'administration

Je me demande s'il est possible d'ajouter un état de publication personnalisé à d'autres pages? CommeFrontpageetBlog

Je parle du texte noir: --Voorpagina (Frontpage)
 Post State WordPresss 

J'ai essayé ceci dans functions.php.

add_filter('display_post_states', 'wpsites_custom_post_states');

function wpsites_custom_post_states($states) { 
    global $post; 
    if( ('page' == get_post_type($post->ID) ) 
        && ( '/themes/Lef-en-Liefde/woningoverzicht.php' == get_page_templ‌​ate_slug( $post->ID ) ) ) {

            $states[] = __('Custom state'); 

    } 
} 

Mais ensuite, les états de publication d'origine (page d'accueil et blog) ont disparu.

Merci d'avance,

Gino

1
Gino

Votre fonction ne renvoie pas de valeur, vous effacez ainsi les états existants.

De plus, ce hook vous transmet la publication actuelle en tant qu'objet, vous pouvez donc l'utiliser au lieu de la publication globale $ post.

De plus, get_page_templ‌​ate_slug renvoie un chemin relatif à la racine de votre thème. Par conséquent, si votre répertoire de thème est appelé Lef-en-Liefde et que le fichier de modèle placé au niveau supérieur de ce répertoire est appelé woningoverzicht.php, votre condition '/themes/Lef-en-Liefde/woningoverzicht.php' == get_page_templ‌​ate_slug($post->ID) ne peut jamais être vraie.

Donc, en corrigeant/changeant ces points, cela devrait marcher:

add_filter('display_post_states', 'wpse240081_custom_post_states');

function wpse240081_custom_post_states( $states, $post ) { 

    if ( ( 'page' == get_post_type( $post->ID ) ) 
        && ( 'woningoverzicht.php' == get_page_templ‌​ate_slug( $post->ID ) ) ) {

            $states[] = __('Custom state'); 

    } 

    return $states;
} 
1
Andy Macaulay-Brook

Voici comment WooCommerce le fait:

<?php
add_filter( 'display_post_states', 'add_display_post_states', 10, 2 );

/**
 * Add a post display state for special WC pages in the page list table.
 *
 * @param array   $post_states An array of post display states.
 * @param WP_Post $post        The current post object.
 */
function add_display_post_states( $post_states, $post ) {
    if ( wc_get_page_id( 'shop' ) === $post->ID ) {
        $post_states['wc_page_for_shop'] = __( 'Shop Page', 'woocommerce' );
    }

    if ( wc_get_page_id( 'cart' ) === $post->ID ) {
        $post_states['wc_page_for_cart'] = __( 'Cart Page', 'woocommerce' );
    }

    if ( wc_get_page_id( 'checkout' ) === $post->ID ) {
        $post_states['wc_page_for_checkout'] = __( 'Checkout Page', 'woocommerce' );
    }

    if ( wc_get_page_id( 'myaccount' ) === $post->ID ) {
        $post_states['wc_page_for_myaccount'] = __( 'My Account Page', 'woocommerce' );
    }

    if ( wc_get_page_id( 'terms' ) === $post->ID ) {
        $post_states['wc_page_for_terms'] = __( 'Terms and Conditions Page', 'woocommerce' );
    }

    return $post_states;
}
0
Roland Soós