CloakPilot_CPT::POST_TYPE, 'post_status' => 'publish', 'posts_per_page' => -1, 'fields' => 'ids', 'no_found_rows' => true ) ); $health = cloakpilot()->health; $bad = 0; foreach ( $links as $id ) { $status = $health->check_link( $id ); if ( 'broken' === $status ) { $bad++; WP_CLI::warning( sprintf( /* translators: %s: link slug */ __( '%s -> broken', 'cloakpilot' ), get_post_field( 'post_name', $id ) ) ); } } CloakPilot_CPT::rebuild_link_map(); update_option( 'cloakpilot_health_last_run', current_time( 'mysql' ) ); WP_CLI::success( sprintf( /* translators: 1: number of links checked, 2: number found broken */ __( '%1$d links checked, %2$d broken.', 'cloakpilot' ), count( $links ), $bad ) ); } /** * סריקת מיקומים מלאה. */ public function scan( $args, $assoc_args ) { $ids = get_posts( array( 'post_type' => array( 'post', 'page' ), 'post_status' => 'publish', 'posts_per_page' => -1, 'fields' => 'ids', 'no_found_rows' => true ) ); foreach ( $ids as $pid ) { cloakpilot()->positions->scan_post( $pid ); } update_option( 'cloakpilot_positions_last_scan', current_time( 'mysql' ) ); WP_CLI::success( sprintf( /* translators: %d: number of posts scanned */ __( '%d posts scanned.', 'cloakpilot' ), count( $ids ) ) ); } /** * בנייה מחדש של מפת ה-redirect. * * @subcommand rebuild-map */ public function rebuild_map( $args, $assoc_args ) { $map = CloakPilot_CPT::rebuild_link_map(); WP_CLI::success( sprintf( /* translators: %d: number of links in the rebuilt redirect map */ __( '%d links in redirect map.', 'cloakpilot' ), count( $map ) ) ); } /** * סיכום סטטיסטיקה. * * ## OPTIONS * [--days=] * : כמה ימים אחורה (ברירת מחדל 30). */ public function stats( $args, $assoc_args ) { $days = isset( $assoc_args['days'] ) ? max( 1, (int) $assoc_args['days'] ) : 30; $from = gmdate( 'Y-m-d', time() - $days * DAY_IN_SECONDS ); $rev = CloakPilot_Clicks::revenue_summary( $from, '' ); WP_CLI::line( sprintf( /* translators: %d: number of days */ __( 'Period: last %d days', 'cloakpilot' ), $days ) ); WP_CLI::line( sprintf( /* translators: %s: click count */ __( 'Clicks: %s', 'cloakpilot' ), CloakPilot_Clicks::total( $from, '' ) ) ); WP_CLI::line( sprintf( /* translators: %s: conversion count */ __( 'Conversions: %s', 'cloakpilot' ), $rev['conversions'] ) ); WP_CLI::line( sprintf( /* translators: %s: revenue amount */ __( 'Revenue: %s', 'cloakpilot' ), $rev['total_revenue'] ) ); } } WP_CLI::add_command( 'cloakpilot', 'CloakPilot_CLI' ); }