我想在 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);
因此,我得到一列“*”,其值也为“*”。但正如我之前所说,我无法使列值可单击。我怎样才能做到这一点?
对
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();
});
});
});
也许这会有帮助。 谢谢