wordpress - 使自定义字段值可单击以便稍后检索它们

问题描述 投票:0回答:1

我想在 WordPress 管理面板的所有帖子页面添加一个自定义列。场景是 - 每个帖子都有一个特色图片。当我查看管理面板中的所有帖子页面时,我有一个自定义列,即“*”,并且每行都有值 *。我想单击特定行的列值以使其被选中并具有不同的外观(即粗体字体)。然后在主页中,我将尝试通过单击来检索那些已选择自定义列值的帖子的特色图像。

我按照本教程并在主题的

functions.php
文件中添加了以下代码:

// GET FEATURED IMAGE
function ST4_get_featured_image($post_ID) {
    $post_thumbnail_id = get_post_thumbnail_id($post_ID);
    if ($post_thumbnail_id) {
        $post_thumbnail_img = wp_get_attachment_image_src($post_thumbnail_id, 'featured_preview');
        return $post_thumbnail_img[0];
    }
}

// ADD NEW COLUMN
function ST4_columns_head($defaults) {
    $defaults['featured_image'] = '*';
    return $defaults;
}

// SHOW THE FEATURED IMAGE
function ST4_columns_content($column_name, $post_ID) {
    if ($column_name == 'featured_image') {
        $post_featured_image = ST4_get_featured_image($post_ID);
        if ($post_featured_image) {
            echo '*';
        }
    }
}

add_filter('manage_posts_columns', 'ST4_columns_head');
add_action('manage_posts_custom_column', 'ST4_columns_content', 10, 2);

因此,我得到一列“*”,其值也为“*”。但正如我之前所说,我无法使列值可单击。我怎样才能做到这一点?

wordpress wordpress-theming custom-post-type custom-fields
1个回答
0
投票

ST4_columns_content
方法进行以下更新,以添加可单击的
<a>
元素:

function ST4_columns_content($column_name, $post_ID) {
    if ($column_name == 'featured_image') {
        $post_featured_image = ST4_get_featured_image($post_ID);
        if ($post_featured_image) {
            echo '<a href="#" class="select-featured" data-post-id="' . esc_attr($post_ID) . '">*<span class="selected-indicator" style="display:none;"> (Selected)</span></a>';
        }
    }
}

// for handling clicks

function ST4_admin_scripts() {
    wp_enqueue_script('st4-admin-script', get_template_directory_uri() . '/js/admin-script.js', array('jquery'), null, true);
}
add_action('admin_enqueue_scripts', 'ST4_admin_scripts');

// 在主题中添加此 jQuery 或创建单独的 js 文件。

jQuery(document).ready(function($) {
    $('.select-featured').on('click', function(e) {
        e.preventDefault();
    
        $(this).toggleClass('selected');
        $(this).find('.selected-indicator').toggle();
        });
    });
});

也许这会有帮助。 谢谢

© www.soinside.com 2019 - 2024. All rights reserved.