web-dev-qa-db-fra.com

comment vérifier si la colonne de type de publication personnalisée existe déjà?

il serait judicieux de vérifier si une colonne personnalisée existe lors de la création de sa logique lors de la création de votre type de publication personnalisé. quel serait le code pour vérifier if_exists ou similaire?

mon code de colonne CPT est ci-dessous:

//set up new column to show custom meta value
function site_title_column($column) {
    $column['views'] = 'Title';
    return $column;
}

add_filter('manage_attorneys_posts_columns', 'site_title_column');

//show custom column data
function site_show_title_column($name) {
    global $post;
    switch ($name) {
        case 'views':
            $title = get_post_meta($post->ID, '_site_professional_title', true);
            echo $title;
    }
}

add_action('manage_attorneys_posts_custom_column',  'site_show_title_column');

serait-ce la suivante?

//set up new column to show custom meta value
function site_title_column($column) {
    $column['views'] = 'Title';

    //if this value is blank, then it does not currently exist, 
    //...so output our custom $column:
    if ($column != NULL) {
       return $column;
    } else {
       return;
    }

    add_filter('manage_attorneys_posts_columns', 'site_title_column');
1
Zach Smith

Vous devez d'abord vérifier, puis affecter votre colonne personnalisée. $column devrait vraiment être $columns pour transmettre le vrai sens, car c'est un tableau.

Donc, vous devez vérifier si la clé de tableau existe avant l'affectation avec quelque chose comme isset() ou array_key_exists().

Enfin, étant donné que votre fonction site_title_column() modifie la valeur d'un filtre, vous devez toujours renvoyer une valeur (généralement la valeur d'origine, éventuellement modifiée), car l'appelant simplement return; renvoie NULL (ce qui est rarement nécessaire).

Je réécrirais votre fonction en tant que telle:

function site_title_column( $columns ) {
    if ( ! isset( $columns['views'] ) ) {
        $columns['views'] = 'Title';
    }
    return $columns;
}
1
Anastis