未设置元数据时,CPT上的自定义列未显示正确的值

时间:2021-05-10 作者:wp_dev99

基本上,我在“编辑”中有2个自定义列。我的自定义帖子类型的php。我需要的是,当$item\\u type设置为“page”但未选择任何页面时,将回显“no selection”(无选择)(与设置“media”但未选择任何媒体文件时相同)。结果是,它显示的是帖子的标题,而不是正确的回音。设置页面或媒体文件变量时,它可以正常工作。就在它未设置的时候。我的代码如下,提前感谢您提供的任何帮助。

function my_show_columns($name) {
global $post;
$hidden_page = get_the_title(get_post_meta($post->ID, \'hidden_page\', true));

$hidden_file =  get_the_title(get_post_meta($post->ID, \'media_file\', true));

$item_type = get_post_meta($post->ID, \'item_type\', true);

    switch ($name) {
        case \'hidden_item_type\':
            if (empty(get_post_meta($post->ID, \'item_type\', true))) {
                echo \'Please select type of item to hide\';
            } else {
                echo $item_type;
            }
            break;
        case \'hidden_item_info\':
            if(get_post_meta($post->ID, \'item_type\', true) == \'page\') {
                echo \'Title: \' . $hidden_page;
            } elseif(get_post_meta($post->ID, \'item_type\', true) == \'media\') {
                echo \'Title: \' . $hidden_file;
            } elseif ( empty(get_post_meta($post->ID, \'hidden_page\', true)) ) {
                echo \'No selection\';
            } elseif ( empty(get_post_meta($post->ID, \'media_file\', true)) ) {
                echo \'No selection\';
            }
            break;
    }
}
我在:

        add_action(\'manage_posts_custom_column\',  array($this, \'my_show_columns\'));

1 个回复
SO网友:wp_dev99

嘿,所以我能想出一些有效的方法。我不知道这是否是最好的方法,但它对我很有效。如果你有更好的想法,请张贴答案。

基本上,我必须改变陈述的顺序。最终的代码如下所示:

function my_show_columns($name) {
global $post;
$hidden_page = get_the_title(get_post_meta($post->ID, \'hidden_page\', true));

$hidden_file =  get_the_title(get_post_meta($post->ID, \'media_file\', true));

$item_type = get_post_meta($post->ID, \'item_type\', true);

    switch ($name) {
        case \'hidden_item_type\':
            if (empty(get_post_meta($post->ID, \'item_type\', true))) {
                echo \'Please select type of item to hide\';
            } else {
                echo $item_type;
            }
            break;
        case \'hidden_item_info\':
            if ( (get_post_meta($post->ID, \'item_type\', true) == \'page\') && (empty(get_post_meta($post->ID, \'hidden_page\', true))) ) {
                echo \'No selection\';
            } elseif ( (get_post_meta($post->ID, \'item_type\', true) == \'media\') && (empty(get_post_meta($post->ID, \'media_file\', true))) ) {
                echo \'No selection\';
            } elseif (get_post_meta($post->ID, \'item_type\', true) == \'page\') {
                echo \'Title: \' . $hidden_page;
            } elseif(get_post_meta($post->ID, \'item_type\', true) == \'media\') {
                echo \'Title: \' . $hidden_file;
            }
            break;
    }
}
我不知道为什么这个方法有效,而另一种方法无效。我猜这是他们被评估的顺序。不管怎样,都在这里。

相关推荐

global variables in templates

我在一个模板文件中定义了一个全局变量page.php. 我可以访问循环中的全局变量。但当循环显示单个帖子时single.php, 变量没有值。我在single.php. 我做错了什么?