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)
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_template_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
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_template_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_template_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_template_slug( $post->ID ) ) ) {
$states[] = __('Custom state');
}
return $states;
}
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;
}