//
// New Post Type
//
add_action('init', 'engage_team_register');
function engage_team_register() {
$args = array(
'label' => esc_html__('Team Members', 'crexis'),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => true,
'rewrite' => true,
'menu_icon' => 'dashicons-groups',
'supports' => array('title','thumbnail')
);
register_post_type( 'team' , $args );
register_taxonomy(
"member-position",
array("team"),
array(
"hierarchical" => true,
"context" => "normal",
'show_ui' => true,
"label" => "Member Position",
"singular_label" => "Member Position",
"rewrite" => true
)
);
}
//
// Thumbnail column
//
add_filter( 'manage_edit-team_columns', 'engage_team_columns_settings' ) ;
function engage_team_columns_settings( $columns ) {
$columns = array(
'cb' => '',
'title' => esc_html__('Title', 'crexis'),
'date' => esc_html__('Date', 'crexis'),
'slider-thumbnail' => ''
);
return $columns;
}
add_action( 'manage_team_posts_custom_column', 'engage_team_columns_content', 10, 2 );
function engage_team_columns_content( $column, $post_id ) {
global $post;
the_post_thumbnail('thumbnail', array('class' => 'column-img'));
}
if( !function_exists( 'engage_team_member_categories' ) ) {
function engage_team_member_categories() {
global $post;
$terms = wp_get_object_terms($post->ID, "member-position");
if($terms) {
foreach ( $terms as $term ) {
echo $term->name;
if(end($terms) !== $term){
echo ", ";
}
}
}
}
}
if( !function_exists( 'engage_team_member_class' ) ) {
function engage_team_member_class(){
global $post;
$output = '';
$terms = wp_get_object_terms($post->ID, "member-position");
foreach ( $terms as $term ) {
$output .= $term->slug . " ";
}
return $output;
}
}/**
* WooCommerce Admin Updates
*
* Functions for updating data, used by the background updater.
*
* @package WooCommerce\Admin
*/
use \Automattic\WooCommerce\Admin\Install as Installer;
use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes;
use \Automattic\WooCommerce\Admin\Notes\UnsecuredReportFiles;
use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Deactivate_Plugin;
use \Automattic\WooCommerce\Admin\ReportExporter;
/**
* Update order stats `status` index length.
* See: https://github.com/woocommerce/woocommerce-admin/issues/2969.
*/
function wc_admin_update_0201_order_status_index() {
global $wpdb;
// Max DB index length. See wp_get_db_schema().
$max_index_length = 191;
$index = $wpdb->get_row( "SHOW INDEX FROM {$wpdb->prefix}wc_order_stats WHERE key_name = 'status'" );
if ( property_exists( $index, 'Sub_part' ) ) {
// The index was created with the right length. Time to bail.
if ( $max_index_length === $index->Sub_part ) { // phpcs:ignore WordPress.NamingConventions.ValidVariableName
return;
}
// We need to drop the index so it can be recreated.
$wpdb->query( "DROP INDEX `status` ON {$wpdb->prefix}wc_order_stats" );
}
// Recreate the status index with a max length.
$wpdb->query( $wpdb->prepare( "ALTER TABLE {$wpdb->prefix}wc_order_stats ADD INDEX status (status(%d))", $max_index_length ) );
}
/**
* Update DB Version.
*/
function wc_admin_update_0201_db_version() {
Installer::update_db_version( '0.20.1' );
}
/**
* Rename "gross_total" to "total_sales".
* See: https://github.com/woocommerce/woocommerce-admin/issues/3175
*/
function wc_admin_update_0230_rename_gross_total() {
global $wpdb;
// We first need to drop the new `total_sales` column, since dbDelta() will have created it.
$wpdb->query( "ALTER TABLE {$wpdb->prefix}wc_order_stats DROP COLUMN `total_sales`" );
// Then we can rename the existing `gross_total` column.
$wpdb->query( "ALTER TABLE {$wpdb->prefix}wc_order_stats CHANGE COLUMN `gross_total` `total_sales` double DEFAULT 0 NOT NULL" );
}
/**
* Update DB Version.
*/
function wc_admin_update_0230_db_version() {
Installer::update_db_version( '0.23.0' );
}
/**
* Remove the note unsnoozing scheduled action.
*/
function wc_admin_update_0251_remove_unsnooze_action() {
as_unschedule_action( WC_Admin_Notes::UNSNOOZE_HOOK, null, 'wc-admin-data' );
as_unschedule_action( WC_Admin_Notes::UNSNOOZE_HOOK, null, 'wc-admin-notes' );
}
/**
* Update DB Version.
*/
function wc_admin_update_0251_db_version() {
Installer::update_db_version( '0.25.1' );
}
/**
* Remove Facebook Extension note.
*/
function wc_admin_update_110_remove_facebook_note() {
WC_Admin_Notes::delete_notes_with_name( 'wc-admin-facebook-extension' );
}
/**
* Update DB Version.
*/
function wc_admin_update_110_db_version() {
Installer::update_db_version( '1.1.0' );
}
/**
* Remove Dismiss action from tracking opt-in admin note.
*/
function wc_admin_update_130_remove_dismiss_action_from_tracking_opt_in_note() {
global $wpdb;
$wpdb->query( "DELETE actions FROM {$wpdb->prefix}wc_admin_note_actions actions INNER JOIN {$wpdb->prefix}wc_admin_notes notes USING (note_id) WHERE actions.name = 'tracking-dismiss' AND notes.name = 'wc-admin-usage-tracking-opt-in'" );
}
/**
* Update DB Version.
*/
function wc_admin_update_130_db_version() {
Installer::update_db_version( '1.3.0' );
}
/**
* Change the deactivate plugin note type to 'info'.
*/
function wc_admin_update_140_change_deactivate_plugin_note_type() {
global $wpdb;
$wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->prefix}wc_admin_notes SET type = 'info' WHERE name = %s", WC_Admin_Notes_Deactivate_Plugin::NOTE_NAME ) );
}
/**
* Update DB Version.
*/
function wc_admin_update_140_db_version() {
Installer::update_db_version( '1.4.0' );
}
/**
* Delete the preexisting export files.
*/
function wc_admin_update_151_delete_report_downloads() {
$upload_dir = wp_upload_dir();
$base_dir = trailingslashit( $upload_dir['basedir'] );
$failed_files = array();
$exports_status = get_option( ReportExporter::EXPORT_STATUS_OPTION, array() );
$has_failure = false;
if ( ! is_array( $exports_status ) ) {
// This is essentially the same path as files failing deletion. Handle as such.
return;
}
// Delete all export files based on the status option values.
foreach ( $exports_status as $key => $progress ) {
list( $report_type, $export_id ) = explode( ':', $key );
if ( ! $export_id ) {
continue;
}
$file = "{$base_dir}wc-{$report_type}-report-export-{$export_id}.csv";
$header = $file . '.headers';
// phpcs:ignore
if ( @file_exists( $file ) && false === @unlink( $file ) ) {
array_push( $failed_files, $file );
}
// phpcs:ignore
if ( @file_exists( $header ) && false === @unlink( $header ) ) {
array_push( $failed_files, $header );
}
}
// If the status option was missing or corrupt, there will be files left over.
$potential_exports = glob( $base_dir . 'wc-*-report-export-*.csv' );
$reports_pattern = '(revenue|products|variations|orders|categories|coupons|taxes|stock|customers|downloads)';
/**
* Look for files we can be reasonably sure were created by the report export.
*
* Export files we created will match the 'wc-*-report-export-*.csv' glob, with
* the first wildcard being one of the exportable report slugs, and the second
* being an integer with 11-14 digits (from microtime()'s output) that represents
* a time in the past.
*/
foreach ( $potential_exports as $potential_export ) {
$matches = array();
// See if the filename matches an unfiltered export pattern.
if ( ! preg_match( "/wc-{$reports_pattern}-report-export-(?P\d{11,14})\.csv\$/", $potential_export, $matches ) ) {
$has_failure = true;
continue;
}
// Validate the timestamp (anything in the past).
$timestamp = (int) substr( $matches['export_id'], 0, 10 );
if ( ! $timestamp || $timestamp > time() ) {
$has_failure = true;
continue;
}
// phpcs:ignore
if ( false === @unlink( $potential_export ) ) {
array_push( $failed_files, $potential_export );
}
}
// Try deleting failed files once more.
foreach ( $failed_files as $failed_file ) {
// phpcs:ignore
if ( false === @unlink( $failed_file ) ) {
$has_failure = true;
}
}
if ( $has_failure ) {
UnsecuredReportFiles::possibly_add_note();
}
}
/**
* Update DB Version.
*/
function wc_admin_update_151_db_version() {
Installer::update_db_version( '1.5.1' );
}
T Seal con cubierta plástica – Poliplastic S.R.L.
El clásico modelo T Seal está disponible con una cubierta de polipropileno que encapsula el cabezal de seguridad metálico. La cubierta de plástico se puede fabricar en una variedad de colores y se puede marcar con láser con el nombre / logotipo del cliente y la numeración consecutiva y para mayor seguridad, el mismo número se marca con láser en la tira.
El diseño único de esta cubierta no afecta la integridad del sello en T, es simplemente una aplicación que permite la opción de codificación de color y códigos de barras si este es un requisito.
Una ranura directamente en línea con los orificios en la caja de seguridad metálica aún permite al usuario y al personal de seguridad ver las puntas del mecanismo «T» dentro de la caja de seguridad asegurando que el precinto se haya bloqueado correctamente y no haya sido manipulado previamente.
Al igual que el precinto T, este precinto encapsulado no se puede desenganchar por intrusión o manipulación, ni se puede desmontar o cortar sin dejar rastros obvios. Se puede fabricar en longitudes operativas de entre 10 cm y 95 cm y es adecuado para usar a temperaturas de -60 ° C a 200 ° C (-76 ° F a 392 ° F).