php – 在WordPress中获得多个获奖者的奖励
发布时间:2020-12-13 16:54:18 所属栏目:PHP教程 来源:网络整理
导读:首先,我是WordPress和 PHP的新手.我想要一个奖励模块,我可以有多个类别,每个类别有多个获奖者. 我已经在CI(CodeIgniter)中实现了这一点,但现在想在WordPress中实现类似的东西.我可以在哪里有一个类别,那个类别可以有多个获胜者,各自的位置.我将能够执行简单
首先,我是WordPress和
PHP的新手.我想要一个奖励模块,我可以有多个类别,每个类别有多个获奖者.
我已经在CI(CodeIgniter)中实现了这一点,但现在想在WordPress中实现类似的东西.我可以在哪里有一个类别,那个类别可以有多个获胜者,各自的位置.我将能够执行简单的crud功能. 我应该为此创建自己的插件,并且一开始我尝试过这个 $your_db_name = $wpdb->prefix . 'your_db_name'; // function to create the DB / Options / Defaults function your_plugin_options_install() { global $wpdb; global $your_db_name; // create the ECPT metabox database table if($wpdb->get_var("show tables like '$your_db_name'") != $your_db_name) { $sql = "CREATE TABLE " . $your_db_name . " ( `id` mediumint(9) NOT NULL AUTO_INCREMENT,`field_1` mediumtext NOT NULL,`field_2` tinytext NOT NULL,`field_3` tinytext NOT NULL,`field_4` tinytext NOT NULL,UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } } // run the install scripts upon plugin activation register_activation_hook(__FILE__,'your_plugin_options_install'); 有什么建议?提前致谢 解决方法
无需创建自定义数据库表来执行此操作.
> Register a custom post type奖项,包括一些功能(标题,编辑和图像). 有很好的插件来管理CPT和自定义字段使这很容易,但这里是上面列出的小插件: <?php /** * Plugin Name: (SO) Awards,prizes and winners * Plugin URI: https://stackoverflow.com/q/25936506/1287812 * Version: 0.1 * Author: brasofilo */ class SO_25936506 { private $cpt = 'reward'; public function __construct() { add_action( 'init',array( $this,'init' ) ); add_action( 'save_post','save' ),10,2 ); } public function init() { $labels = array( 'name' => _x( 'Rewards','post type general name' ),'singular_name' => _x( 'Reward','post type singular name' ),'add_new' => _x( 'Add New','reward' ),'add_new_item' => __( 'Add New Reward' ),'edit_item' => __( 'Edit Reward' ),'new_item' => __( 'New Reward' ),'all_items' => __( 'All Rewards' ),'view_item' => __( 'View Reward' ),'search_items' => __( 'Search Rewards' ),'not_found' => __( 'No rewards found' ),'not_found_in_trash' => __( 'No rewards found in Trash' ),'parent_item_colon' => '','menu_name' => __( 'Rewards' ) ); $args = array( 'labels' => $labels,'public' => true,'publicly_queryable' => true,'show_ui' => true,'show_in_menu' => true,'query_var' => true,'rewrite' => array( 'slug' => _x( 'reward','URL slug' ) ),'capability_type' => 'page','has_archive' => true,'hierarchical' => false,'menu_position' => null,'taxonomies' => array('prize'),'supports' => array( 'title','editor','thumbnail' ),'register_meta_box_cb' => array( $this,'add_metabox' ) ); register_post_type( $this->cpt,$args ); register_taxonomy('prize',$this->cpt,array( // Hierarchical taxonomy (like categories) 'hierarchical' => true,// This array of options controls the labels displayed in the WordPress Admin UI 'labels' => array( 'name' => _x( 'Prizes','taxonomy general name' ),'singular_name' => _x( 'Prize','taxonomy singular name' ),'search_items' => __( 'Search Prizes' ),'all_items' => __( 'All Prizes' ),'parent_item' => __( 'Parent Prize' ),'parent_item_colon' => __( 'Parent Prize:' ),'edit_item' => __( 'Edit Prize' ),'update_item' => __( 'Update Prize' ),'add_new_item' => __( 'Add New Prize' ),'new_item_name' => __( 'New Prize Name' ),'menu_name' => __( 'Prizes' ),),// Control the slugs used for this taxonomy 'rewrite' => array( 'slug' => 'prizes',// 'with_front' => false,'hierarchical' => true ),)); } public function add_metabox() { add_meta_box( 'winners','Winners','do_metabox' ),'normal','default',array( // to build the custom fields '_winner_gold' => array( 'title'=>'Gold','desc' => 'G desc' ),'_winner_silver' => array( 'title'=>'Silver','desc' => 'S desc' ),'_winner_bronze' => array( 'title'=>'Bronze','desc' => 'B desc' ) ) ); } // back function of add meta box that displays the meta box in the post edit screen public function do_metabox( $post,$box ) { wp_nonce_field( plugin_basename( __FILE__ ),'noncename_so_25936506' ); foreach( $box['args'] as $field => $value ) $this->print_field( $field,$value,$post->ID ); } public function print_field( $field,$post_id ) { $post_meta = get_post_meta( $post_id,$field,true); $selected = ($post_meta) ? $post_meta : false; $users_dd = wp_dropdown_users(array( 'name' => 'author','echo'=>false,'name'=>$field,'show_option_none'=>'Select winners' )); printf( '<label>%s: </label>%s <small>%s</small><br/>',$value['title'],$users_dd,$value['desc'] ); } public function save( $post_id,$post_object ) { // Verify auto save if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // Security if ( !isset( $_POST['noncename_so_25936506'] ) || !wp_verify_nonce( $_POST['noncename_so_25936506'],plugin_basename( __FILE__ ) ) ) return; if ( $this->cpt !== $post_object->post_type ) return; // Process post data foreach( array('_winner_gold','_winner_silver','_winner_bronze') as $field ) { if ( isset( $_POST[$field] ) ) update_post_meta( $post_id,$_POST[$field] ); else delete_post_meta( $post_id,$field ); } } } new SO_25936506(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |