不朽的爱情

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 563|回复: 0

wordpress 后台文章列表添加特色图片管理功能

[复制链接]

44

主题

44

帖子

228

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
228
发表于 2020-7-28 12:56:35 | 显示全部楼层 |阅读模式
  1. //添加列表特色图片

  2. class doocii_Easy_Thumbnail_Switcher {

  3.     public $add_new_str;
  4.     public $change_str;
  5.     public $remove_str;
  6.     public $upload_title;
  7.     public $upload_add;
  8.     public $confirm_str;

  9.     public function __construct() {

  10.         $this->add_new_str = __( '添加');
  11.         $this->change_str = __( '更改');
  12.         $this->remove_str = __( '移除');
  13.         $this->upload_title = __( '上传特色图片');
  14.         $this->upload_add = __( '确定');
  15.         $this->confirm_str = __( '你确定?');

  16.         add_filter( 'manage_posts_columns', array( $this, 'add_column' ) );
  17.         add_action( 'manage_posts_custom_column', array( $this, 'thumb_column' ), 10, 2 );
  18.         add_action( 'admin_footer', array( $this, 'add_nonce' ) );
  19.         add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) );

  20.         add_action( 'wp_ajax_ts_ets_update', array( $this, 'update' ) );
  21.         add_action( 'wp_ajax_ts_ets_remove', array( $this, 'remove' ) );

  22.         add_image_size( 'ts-ets-thumb', 175, 175, array( 'center', 'center' ) );

  23.     }

  24.     /**
  25.      * 安全检查
  26.      */
  27.     public function add_nonce() {

  28.         global $pagenow;

  29.         if( $pagenow !== 'edit.php' ) {
  30.             return;
  31.         }
  32.         wp_nonce_field( 'ts_ets_nonce', 'ts_ets_nonce' );

  33.     }

  34.     /**
  35.      * 加载脚本
  36.      */
  37.     public function scripts( $pagenow ) {

  38.         if( $pagenow !== 'edit.php' ) {
  39.             return;
  40.         }

  41.         wp_enqueue_media();
  42.         wp_enqueue_script( 'doocii-ets-js', get_template_directory_uri() . '/js/script.js', array( 'jquery', 'media-upload', 'thickbox' ), '1.0', true );

  43.         wp_localize_script( 'doocii-ets-js', 'ets_strings', array(
  44.             'upload_title' => $this->upload_title,
  45.             'upload_add' => $this->upload_add,
  46.             'confirm' => $this->confirm_str,
  47.         ) );

  48.     }

  49.     /**
  50.      * The action which is added to the post row actions
  51.      */
  52.     public function add_column( $columns ) {

  53.         $columns['ts-ets-option'] = __( '缩略图');
  54.         return $columns;

  55.     }

  56.     /**
  57.      * 显示列
  58.      */
  59.     public function thumb_column( $column, $id ) {

  60.         switch( $column ) {
  61.             case 'ts-ets-option':

  62.                 if( has_post_thumbnail() ) {
  63.                     the_post_thumbnail( 'ts-ets-thumb' );
  64.                     echo '<br>';
  65.                     echo sprintf( '<button type="button" class="button-primary ts-ets-add" data-id="%s">%s</button>', esc_attr( $id ), $this->change_str );
  66.                     echo sprintf( ' <button type="button" class="button-secondary ts-ets-remove" data-id="%s">%s</button>', esc_attr( $id ), $this->remove_str );
  67.                 } else {
  68.                     echo sprintf( '<button type="button" class="button-primary ts-ets-add" data-id="%s">%s</button>', esc_attr( $id ), $this->add_new_str );
  69.                 }

  70.                 break;
  71.         }

  72.     }

  73.     /**
  74.      * AJAX保存更新缩略图
  75.      */
  76.     public function update() {

  77.         // 检查是否所有需要的数据都设置与否
  78.         if( !isset( $_POST['nonce'] ) || !isset( $_POST['post_id'] ) || !isset( $_POST['thumb_id'] ) ) {
  79.             wp_die();
  80.         }

  81.         //验证
  82.         if( !wp_verify_nonce( $_POST['nonce'], 'ts_ets_nonce' ) ) {
  83.             wp_die();
  84.         }

  85.         $id = $_POST['post_id'];
  86.         $thumb_id = $_POST['thumb_id'];

  87.         set_post_thumbnail( $id, $thumb_id );

  88.         echo wp_get_attachment_image( $thumb_id, 'ts-ets-thumb' );
  89.         echo '<br>';
  90.         echo sprintf( '<button type="button" class="button-primary ts-ets-add" data-id="%s">%s</button>', esc_attr( $id ), $this->change_str );
  91.         echo sprintf( ' <button type="button" class="button-secondary ts-ets-remove" data-id="%s">%s</button>', esc_attr( $id ), $this->remove_str );

  92.         wp_die();

  93.     }

  94.     /**
  95.      * AJAX回调后删除缩略图
  96.      */
  97.     public function remove() {

  98.         // Check if all required data are set or not
  99.         if( !isset( $_POST['nonce'] ) || !isset( $_POST['post_id'] ) ) {
  100.             wp_die();
  101.         }

  102.         // Verify nonce
  103.         if( !wp_verify_nonce( $_POST['nonce'], 'ts_ets_nonce' ) ) {
  104.             wp_die();
  105.         }

  106.         $id = $_POST['post_id'];

  107.         delete_post_thumbnail( $id );

  108.         echo sprintf( '<button type="button" class="button-primary ts-ets-add" data-id="%s">%s</button>', esc_attr( $id ), $this->add_new_str );

  109.         wp_die();

  110.     }

  111. }
  112. new doocii_Easy_Thumbnail_Switcher();

  113. //特色图片结束
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|不朽的爱情

GMT+8, 2021-6-20 21:56 , Processed in 0.436012 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表