diff --git a/category.php b/category.php index a26725a..5dd038e 100644 --- a/category.php +++ b/category.php @@ -10,7 +10,7 @@ $loop_featured = new WP_Query( array( 'category_name' => $cat_name, - 'posts_per_page' => get_theme_mod( 'featured-posts-count-category', '4' ), + 'posts_per_page' => get_theme_mod( 'featured-posts-count-category', '5' ), )); $ids = array(); ?> diff --git a/functions.php b/functions.php index 7292ccf..d93fbee 100644 --- a/functions.php +++ b/functions.php @@ -14,12 +14,6 @@ // Load Kirki include( get_template_directory() . '/functions/kirki/kirki.php' ); -// Load theme updater functions -function featureon_theme_updater() { - require( get_template_directory() . '/functions/updater/theme-updater.php' ); -} -add_action( 'after_setup_theme', 'featureon_theme_updater' ); - if ( ! function_exists( 'featureon_load' ) ) { function featureon_load() { diff --git a/functions/updater/theme-updater-admin.php b/functions/updater/theme-updater-admin.php deleted file mode 100644 index a45bd36..0000000 --- a/functions/updater/theme-updater-admin.php +++ /dev/null @@ -1,626 +0,0 @@ - 'http://easydigitaldownloads.com', - 'theme_slug' => get_template(), - 'item_name' => '', - 'license' => '', - 'version' => '', - 'author' => '', - 'download_id' => '', - 'renew_url' => '', - 'beta' => false, - ) ); - - /** - * Fires after the theme $config is setup. - * - * @since x.x.x - * - * @param array $config Array of EDD SL theme data. - */ - do_action( 'post_edd_sl_theme_updater_setup', $config ); - - // Set config arguments - $this->remote_api_url = $config['remote_api_url']; - $this->item_name = $config['item_name']; - $this->theme_slug = sanitize_key( $config['theme_slug'] ); - $this->version = $config['version']; - $this->author = $config['author']; - $this->download_id = $config['download_id']; - $this->renew_url = $config['renew_url']; - $this->beta = $config['beta']; - - // Populate version fallback - if ( '' == $config['version'] ) { - $theme = wp_get_theme( $this->theme_slug ); - $this->version = $theme->get( 'Version' ); - } - - // Strings passed in from the updater config - $this->strings = $strings; - - add_action( 'init', array( $this, 'updater' ) ); - add_action( 'admin_init', array( $this, 'register_option' ) ); - add_action( 'admin_init', array( $this, 'license_action' ) ); - add_action( 'admin_menu', array( $this, 'license_menu' ) ); - add_action( 'update_option_' . $this->theme_slug . '_license_key', array( $this, 'activate_license' ), 10, 2 ); - add_filter( 'http_request_args', array( $this, 'disable_wporg_request' ), 5, 2 ); - - } - - /** - * Creates the updater class. - * - * since 1.0.0 - */ - function updater() { - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - /* If there is no valid license key status, don't allow updates. */ - if ( get_option( $this->theme_slug . '_license_key_status', false) != 'valid' ) { - return; - } - - if ( !class_exists( 'EDD_Theme_Updater' ) ) { - // Load our custom theme updater - include( dirname( __FILE__ ) . '/theme-updater-class.php' ); - } - - new EDD_Theme_Updater( - array( - 'remote_api_url' => $this->remote_api_url, - 'version' => $this->version, - 'license' => trim( get_option( $this->theme_slug . '_license_key' ) ), - 'item_name' => $this->item_name, - 'author' => $this->author, - 'beta' => $this->beta - ), - $this->strings - ); - } - - /** - * Adds a menu item for the theme license under the appearance menu. - * - * since 1.0.0 - */ - function license_menu() { - - $strings = $this->strings; - - add_theme_page( - $strings['theme-license'], - $strings['theme-license'], - 'manage_options', - $this->theme_slug . '-license', - array( $this, 'license_page' ) - ); - } - - /** - * Outputs the markup used on the theme license page. - * - * since 1.0.0 - */ - function license_page() { - - $strings = $this->strings; - - $license = trim( get_option( $this->theme_slug . '_license_key' ) ); - $status = get_option( $this->theme_slug . '_license_key_status', false ); - - // Checks license status to display under license key - if ( ! $license ) { - $message = $strings['enter-key']; - } else { - // delete_transient( $this->theme_slug . '_license_message' ); - if ( ! get_transient( $this->theme_slug . '_license_message', false ) ) { - set_transient( $this->theme_slug . '_license_message', $this->check_license(), ( 60 * 60 * 24 ) ); - } - $message = get_transient( $this->theme_slug . '_license_message' ); - } - ?> -
-

-
- - theme_slug . '-license' ); ?> - - - - - - - - - - - - - - - - - -
- - - -

- -

-
- - - theme_slug . '_nonce', $this->theme_slug . '_nonce' ); - if ( 'valid' == $status ) { ?> - - - - -
- -
- theme_slug . '-license', - $this->theme_slug . '_license_key', - array( $this, 'sanitize_license' ) - ); - } - - /** - * Sanitizes the license key. - * - * since 1.0.0 - * - * @param string $new License key that was submitted. - * @return string $new Sanitized license key. - */ - function sanitize_license( $new ) { - - $old = get_option( $this->theme_slug . '_license_key' ); - - if ( $old && $old != $new ) { - // New license has been entered, so must reactivate - delete_option( $this->theme_slug . '_license_key_status' ); - delete_transient( $this->theme_slug . '_license_message' ); - } - - return $new; - } - - /** - * Makes a call to the API. - * - * @since 1.0.0 - * - * @param array $api_params to be used for wp_remote_get. - * @return array $response decoded JSON response. - */ - function get_api_response( $api_params ) { - - // Call the custom API. - $verify_ssl = (bool) apply_filters( 'edd_sl_api_request_verify_ssl', true ); - $response = wp_remote_post( $this->remote_api_url, array( 'timeout' => 15, 'sslverify' => $verify_ssl, 'body' => $api_params ) ); - - return $response; - } - - /** - * Activates the license key. - * - * @since 1.0.0 - */ - function activate_license() { - - $license = trim( get_option( $this->theme_slug . '_license_key' ) ); - - // Data to send in our API request. - $api_params = array( - 'edd_action' => 'activate_license', - 'license' => $license, - 'item_name' => urlencode( $this->item_name ), - 'url' => home_url() - ); - - $response = $this->get_api_response( $api_params ); - - // make sure the response came back okay - if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { - - if ( is_wp_error( $response ) ) { - $message = $response->get_error_message(); - } else { - $message = __( 'An error occurred, please try again.' ); - } - - $base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ); - $redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url ); - - wp_redirect( $redirect ); - exit(); - - } else { - - $license_data = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( false === $license_data->success ) { - - switch( $license_data->error ) { - - case 'expired' : - - $message = sprintf( - __( 'Your license key expired on %s.' ), - date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) ) - ); - break; - - case 'disabled': - case 'revoked' : - - $message = __( 'Your license key has been disabled.' ); - break; - - case 'missing' : - - $message = __( 'Invalid license.' ); - break; - - case 'invalid' : - case 'site_inactive' : - - $message = __( 'Your license is not active for this URL.' ); - break; - - case 'item_name_mismatch' : - - $message = sprintf( __( 'This appears to be an invalid license key for %s.' ), $this->item_name ); - break; - - case 'no_activations_left': - - $message = __( 'Your license key has reached its activation limit.' ); - break; - - default : - - $message = __( 'An error occurred, please try again.' ); - break; - } - - if ( ! empty( $message ) ) { - $base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ); - $redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url ); - - wp_redirect( $redirect ); - exit(); - } - - } - - } - - // $response->license will be either "active" or "inactive" - if ( $license_data && isset( $license_data->license ) ) { - update_option( $this->theme_slug . '_license_key_status', $license_data->license ); - delete_transient( $this->theme_slug . '_license_message' ); - } - - wp_redirect( admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ) ); - exit(); - - } - - /** - * Deactivates the license key. - * - * @since 1.0.0 - */ - function deactivate_license() { - - // Retrieve the license from the database. - $license = trim( get_option( $this->theme_slug . '_license_key' ) ); - - // Data to send in our API request. - $api_params = array( - 'edd_action' => 'deactivate_license', - 'license' => $license, - 'item_name' => urlencode( $this->item_name ), - 'url' => home_url() - ); - - $response = $this->get_api_response( $api_params ); - - // make sure the response came back okay - if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { - - if ( is_wp_error( $response ) ) { - $message = $response->get_error_message(); - } else { - $message = __( 'An error occurred, please try again.' ); - } - - $base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ); - $redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url ); - - wp_redirect( $redirect ); - exit(); - - } else { - - $license_data = json_decode( wp_remote_retrieve_body( $response ) ); - - // $license_data->license will be either "deactivated" or "failed" - if ( $license_data && ( $license_data->license == 'deactivated' ) ) { - delete_option( $this->theme_slug . '_license_key_status' ); - delete_transient( $this->theme_slug . '_license_message' ); - } - - } - - if ( ! empty( $message ) ) { - $base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ); - $redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url ); - - wp_redirect( $redirect ); - exit(); - } - - wp_redirect( admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ) ); - exit(); - - } - - /** - * Constructs a renewal link - * - * @since 1.0.0 - */ - function get_renewal_link() { - - // If a renewal link was passed in the config, use that - if ( '' != $this->renew_url ) { - return $this->renew_url; - } - - // If download_id was passed in the config, a renewal link can be constructed - $license_key = trim( get_option( $this->theme_slug . '_license_key', false ) ); - if ( '' != $this->download_id && $license_key ) { - $url = esc_url( $this->remote_api_url ); - $url .= '/checkout/?edd_license_key=' . $license_key . '&download_id=' . $this->download_id; - return $url; - } - - // Otherwise return the remote_api_url - return $this->remote_api_url; - - } - - - - /** - * Checks if a license action was submitted. - * - * @since 1.0.0 - */ - function license_action() { - - if ( isset( $_POST[ $this->theme_slug . '_license_activate' ] ) ) { - if ( check_admin_referer( $this->theme_slug . '_nonce', $this->theme_slug . '_nonce' ) ) { - $this->activate_license(); - } - } - - if ( isset( $_POST[$this->theme_slug . '_license_deactivate'] ) ) { - if ( check_admin_referer( $this->theme_slug . '_nonce', $this->theme_slug . '_nonce' ) ) { - $this->deactivate_license(); - } - } - - } - - /** - * Checks if license is valid and gets expire date. - * - * @since 1.0.0 - * - * @return string $message License status message. - */ - function check_license() { - - $license = trim( get_option( $this->theme_slug . '_license_key' ) ); - $strings = $this->strings; - - $api_params = array( - 'edd_action' => 'check_license', - 'license' => $license, - 'item_name' => urlencode( $this->item_name ), - 'url' => home_url() - ); - - $response = $this->get_api_response( $api_params ); - - // make sure the response came back okay - if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { - - if ( is_wp_error( $response ) ) { - $message = $response->get_error_message(); - } else { - $message = $strings['license-status-unknown']; - } - - $base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ); - $redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url ); - - wp_redirect( $redirect ); - exit(); - - } else { - - $license_data = json_decode( wp_remote_retrieve_body( $response ) ); - - // If response doesn't include license data, return - if ( !isset( $license_data->license ) ) { - $message = $strings['license-status-unknown']; - return $message; - } - - // We need to update the license status at the same time the message is updated - if ( $license_data && isset( $license_data->license ) ) { - update_option( $this->theme_slug . '_license_key_status', $license_data->license ); - } - - // Get expire date - $expires = false; - if ( isset( $license_data->expires ) && 'lifetime' != $license_data->expires ) { - $expires = date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) ); - $renew_link = '' . $strings['renew'] . ''; - } elseif ( isset( $license_data->expires ) && 'lifetime' == $license_data->expires ) { - $expires = 'lifetime'; - } - - // Get site counts - $site_count = $license_data->site_count; - $license_limit = $license_data->license_limit; - - // If unlimited - if ( 0 == $license_limit ) { - $license_limit = $strings['unlimited']; - } - - if ( $license_data->license == 'valid' ) { - $message = $strings['license-key-is-active'] . ' '; - if ( isset( $expires ) && 'lifetime' != $expires ) { - $message .= sprintf( $strings['expires%s'], $expires ) . ' '; - } - if ( isset( $expires ) && 'lifetime' == $expires ) { - $message .= $strings['expires-never']; - } - if ( $site_count && $license_limit ) { - $message .= sprintf( $strings['%1$s/%2$-sites'], $site_count, $license_limit ); - } - } else if ( $license_data->license == 'expired' ) { - if ( $expires ) { - $message = sprintf( $strings['license-key-expired-%s'], $expires ); - } else { - $message = $strings['license-key-expired']; - } - if ( $renew_link ) { - $message .= ' ' . $renew_link; - } - } else if ( $license_data->license == 'invalid' ) { - $message = $strings['license-keys-do-not-match']; - } else if ( $license_data->license == 'inactive' ) { - $message = $strings['license-is-inactive']; - } else if ( $license_data->license == 'disabled' ) { - $message = $strings['license-key-is-disabled']; - } else if ( $license_data->license == 'site_inactive' ) { - // Site is inactive - $message = $strings['site-is-inactive']; - } else { - $message = $strings['license-status-unknown']; - } - - } - - return $message; - } - - /** - * Disable requests to wp.org repository for this theme. - * - * @since 1.0.0 - */ - function disable_wporg_request( $r, $url ) { - - // If it's not a theme update request, bail. - if ( 0 !== strpos( $url, 'https://api.wordpress.org/themes/update-check/1.1/' ) ) { - return $r; - } - - // Decode the JSON response - $themes = json_decode( $r['body']['themes'] ); - - // Remove the active parent and child themes from the check - $parent = get_option( 'template' ); - $child = get_option( 'stylesheet' ); - unset( $themes->themes->$parent ); - unset( $themes->themes->$child ); - - // Encode the updated JSON response - $r['body']['themes'] = json_encode( $themes ); - - return $r; - } - -} - -/** - * This is a means of catching errors from the activation method above and displyaing it to the customer - */ -function edd_sample_theme_admin_notices() { - if ( isset( $_GET['sl_theme_activation'] ) && ! empty( $_GET['message'] ) ) { - - switch( $_GET['sl_theme_activation'] ) { - - case 'false': - $message = urldecode( $_GET['message'] ); - ?> -
-

-
- 'http://easydigitaldownloads.com', - 'request_data' => array(), - 'theme_slug' => get_template(), // use get_stylesheet() for child theme updates - 'item_name' => '', - 'license' => '', - 'version' => '', - 'author' => '', - 'beta' => false, - ); - - $args = wp_parse_args( $args, $defaults ); - - $this->license = $args['license']; - $this->item_name = $args['item_name']; - $this->version = $args['version']; - $this->theme_slug = sanitize_key( $args['theme_slug'] ); - $this->author = $args['author']; - $this->beta = $args['beta']; - $this->remote_api_url = $args['remote_api_url']; - $this->response_key = $this->theme_slug . '-' . $this->beta . '-update-response'; - $this->strings = $strings; - - add_filter( 'site_transient_update_themes', array( $this, 'theme_update_transient' ) ); - add_filter( 'delete_site_transient_update_themes', array( $this, 'delete_theme_update_transient' ) ); - add_action( 'load-update-core.php', array( $this, 'delete_theme_update_transient' ) ); - add_action( 'load-themes.php', array( $this, 'delete_theme_update_transient' ) ); - add_action( 'load-themes.php', array( $this, 'load_themes_screen' ) ); - } - - /** - * Show the update notification when neecessary - * - * @return void - */ - function load_themes_screen() { - add_thickbox(); - add_action( 'admin_notices', array( $this, 'update_nag' ) ); - } - - /** - * Display the update notifications - * - * @return void - */ - function update_nag() { - - $strings = $this->strings; - $theme = wp_get_theme( $this->theme_slug ); - $api_response = get_transient( $this->response_key ); - - if ( false === $api_response ) { - return; - } - - $update_url = wp_nonce_url( 'update.php?action=upgrade-theme&theme=' . urlencode( $this->theme_slug ), 'upgrade-theme_' . $this->theme_slug ); - $update_onclick = ' onclick="if ( confirm(\'' . esc_js( $strings['update-notice'] ) . '\') ) {return true;}return false;"'; - - if ( version_compare( $this->version, $api_response->new_version, '<' ) ) { - - echo '
'; - printf( - $strings['update-available'], - $theme->get( 'Name' ), - $api_response->new_version, - '#TB_inline?width=640&inlineId=' . $this->theme_slug . '_changelog', - $theme->get( 'Name' ), - $update_url, - $update_onclick - ); - echo '
'; - echo ''; - } - } - - /** - * Update the theme update transient with the response from the version check - * - * @param array $value The default update values. - * @return array|boolean If an update is available, returns the update parameters, if no update is needed returns false, if - * the request fails returns false. - */ - function theme_update_transient( $value ) { - $update_data = $this->check_for_update(); - if ( $update_data ) { - - // Make sure the theme property is set. See issue 1463 on Github in the Software Licensing Repo. - $update_data['theme'] = $this->theme_slug; - - $value->response[ $this->theme_slug ] = $update_data; - } - return $value; - } - - /** - * Remove the update data for the theme - * - * @return void - */ - function delete_theme_update_transient() { - delete_transient( $this->response_key ); - } - - /** - * Call the EDD SL API (using the URL in the construct) to get the latest version information - * - * @return array|boolean If an update is available, returns the update parameters, if no update is needed returns false, if - * the request fails returns false. - */ - function check_for_update() { - - $update_data = get_transient( $this->response_key ); - - if ( false === $update_data ) { - $failed = false; - - $api_params = array( - 'edd_action' => 'get_version', - 'license' => $this->license, - 'name' => $this->item_name, - 'slug' => $this->theme_slug, - 'version' => $this->version, - 'author' => $this->author, - 'beta' => $this->beta - ); - - $response = wp_remote_post( $this->remote_api_url, array( 'timeout' => 15, 'body' => $api_params ) ); - - // Make sure the response was successful - if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { - $failed = true; - } - - $update_data = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( ! is_object( $update_data ) ) { - $failed = true; - } - - // If the response failed, try again in 30 minutes - if ( $failed ) { - $data = new stdClass; - $data->new_version = $this->version; - set_transient( $this->response_key, $data, strtotime( '+30 minutes', time() ) ); - return false; - } - - // If the status is 'ok', return the update arguments - if ( ! $failed ) { - $update_data->sections = maybe_unserialize( $update_data->sections ); - set_transient( $this->response_key, $update_data, strtotime( '+12 hours', time() ) ); - } - } - - if ( version_compare( $this->version, $update_data->new_version, '>=' ) ) { - return false; - } - - return (array) $update_data; - } - -} diff --git a/functions/updater/theme-updater.php b/functions/updater/theme-updater.php deleted file mode 100644 index 6c9bdf4..0000000 --- a/functions/updater/theme-updater.php +++ /dev/null @@ -1,54 +0,0 @@ - 'https://alx.media', // Site where EDD is hosted - 'item_name' => 'Featureon', // Name of theme - 'theme_slug' => 'featureon', // Theme slug - 'version' => '2.4.9', // The current version of this theme - 'author' => 'AlxMedia', // The author of this theme - 'download_id' => '', // Optional, used for generating a license renewal link - 'renew_url' => '', // Optional, allows for a custom license renewal link - 'beta' => false, // Optional, set to true to opt into beta versions - ), - - // Strings - $strings = array( - 'theme-license' => __( 'Theme License', 'featureon' ), - 'enter-key' => __( 'Enter your theme license key.', 'featureon' ), - 'license-key' => __( 'License Key', 'featureon' ), - 'license-action' => __( 'License Action', 'featureon' ), - 'deactivate-license' => __( 'Deactivate License', 'featureon' ), - 'activate-license' => __( 'Activate License', 'featureon' ), - 'status-unknown' => __( 'License status is unknown.', 'featureon' ), - 'renew' => __( 'Renew?', 'featureon' ), - 'unlimited' => __( 'unlimited', 'featureon' ), - 'license-key-is-active' => __( 'License key is active.', 'featureon' ), - 'expires%s' => __( 'Expires %s.', 'featureon' ), - 'expires-never' => __( 'Lifetime License.', 'featureon' ), - '%1$s/%2$-sites' => __( 'You have %1$s / %2$s sites activated.', 'featureon' ), - 'license-key-expired-%s' => __( 'License key expired %s.', 'featureon' ), - 'license-key-expired' => __( 'License key has expired.', 'featureon' ), - 'license-keys-do-not-match' => __( 'License keys do not match.', 'featureon' ), - 'license-is-inactive' => __( 'License is inactive.', 'featureon' ), - 'license-key-is-disabled' => __( 'License key is disabled.', 'featureon' ), - 'site-is-inactive' => __( 'Site is inactive.', 'featureon' ), - 'license-status-unknown' => __( 'License status is unknown.', 'featureon' ), - 'update-notice' => __( "Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update.", 'featureon' ), - 'update-available' => __('%1$s %2$s is available. Check out what\'s new or update now.', 'featureon' ), - ) - -); diff --git a/languages/featureon.pot b/languages/featureon.pot index b2ad61f..3042b4c 100644 --- a/languages/featureon.pot +++ b/languages/featureon.pot @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Featureon\n" -"POT-Creation-Date: 2021-07-23 18:34+0200\n" +"POT-Creation-Date: 2022-08-25 10:19+0200\n" "PO-Revision-Date: 2018-09-21 21:27+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -10,7 +10,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" "X-Poedit-KeywordsList: __;_e;_x;_ex;_n;_nx;_n_noop;_nx_noop;" "translate_nooped_plural;number_format_i18n;date_i18n;esc_html__;esc_html_e;" "esc_html_x;esc_attr__;esc_attr_e;esc_attr_x\n" @@ -62,99 +62,99 @@ msgstr "" msgid "Theme by" msgstr "" -#: functions.php:91 +#: functions.php:85 msgid "Mobile" msgstr "" -#: functions.php:92 +#: functions.php:86 msgid "Topbar" msgstr "" -#: functions.php:93 functions/theme-options.php:34 +#: functions.php:87 functions/theme-options.php:34 msgid "Header" msgstr "" -#: functions.php:94 functions/theme-options.php:39 +#: functions.php:88 functions/theme-options.php:39 msgid "Footer" msgstr "" -#: functions.php:189 +#: functions.php:183 msgid "Primary" msgstr "" -#: functions.php:189 functions.php:190 +#: functions.php:183 functions.php:184 msgid "Normal full width sidebar" msgstr "" -#: functions.php:190 +#: functions.php:184 msgid "Secondary" msgstr "" -#: functions.php:192 functions/theme-options.php:295 +#: functions.php:186 functions/theme-options.php:295 msgid "Header Ads" msgstr "" -#: functions.php:193 functions/theme-options.php:322 +#: functions.php:187 functions/theme-options.php:322 msgid "Footer Ads" msgstr "" -#: functions.php:193 +#: functions.php:187 msgid "Footer ads area" msgstr "" -#: functions.php:195 +#: functions.php:189 msgid "Frontpage Top 1" msgstr "" -#: functions.php:195 functions.php:196 functions.php:197 functions.php:198 +#: functions.php:189 functions.php:190 functions.php:191 functions.php:192 msgid "Frontpage area" msgstr "" -#: functions.php:196 +#: functions.php:190 msgid "Frontpage Top 2" msgstr "" -#: functions.php:197 +#: functions.php:191 msgid "Frontpage Bottom 1" msgstr "" -#: functions.php:198 +#: functions.php:192 msgid "Frontpage Bottom 2" msgstr "" -#: functions.php:200 +#: functions.php:194 msgid "Footer 1" msgstr "" -#: functions.php:200 functions.php:201 functions.php:202 functions.php:203 +#: functions.php:194 functions.php:195 functions.php:196 functions.php:197 msgid "Widgetized footer" msgstr "" -#: functions.php:201 +#: functions.php:195 msgid "Footer 2" msgstr "" -#: functions.php:202 +#: functions.php:196 msgid "Footer 3" msgstr "" -#: functions.php:203 +#: functions.php:197 msgid "Footer 4" msgstr "" -#: functions.php:698 +#: functions.php:692 msgid "Alx Extensions" msgstr "" -#: functions.php:702 +#: functions.php:696 msgid "Meta Box" msgstr "" -#: functions.php:706 +#: functions.php:700 msgid "Regenerate Thumbnails" msgstr "" -#: functions.php:710 +#: functions.php:704 msgid "WP-PageNavi" msgstr "" diff --git a/readme.txt b/readme.txt index a5a9752..0e3d114 100644 --- a/readme.txt +++ b/readme.txt @@ -4,11 +4,11 @@ Requires at least: 5.0 Tested up to: 6.0 License: GPLv3 License URI: http://www.gnu.org/licenses/gpl-3.0.html -Tags: blog, one-column, two-columns, three-columns, right-sidebar, left-sidebar, custom-colors, custom-menu, featured-images, flexible-header, full-width-template, post-formats, sticky-post, theme-options, threaded-comments, translation-ready, custom-logo, custom-header, custom-background +Tags: blog, one-column, two-columns, three-columns, right-sidebar, left-sidebar, custom-colors, custom-menu, featured-images, flexible-header, full-width-template, post-formats, sticky-post, theme-options, threaded-comments, translation-ready, custom-logo, custom-header, custom-background, news, entertainment, footer-widgets == Description == -Featureon is a responsive 100% high resolution theme for blogs and magazines. Unique toggle sidebars give a great browsing and reading experience on both tablet and mobile. The feature list is long: Unlimited accent colors, unlimited widget areas, 0-2 sidebars to the left or right that can be uniquely specified for each page or post, 300px / 300px fixed width sidebars, 0-4 footer widget columns, almost zero layout images, related posts and post nav, featured stories and carousel, 5 post formats, good SEO, 2 flexible custom widgets, localisation support, social links, logo upload and many more useful admin panel features. +Featureon is a responsive 100% high resolution theme for blogs and magazines. Unique toggle sidebars give a great browsing and reading experience on both tablet and mobile. The feature list is long: Unlimited accent colors, 0-2 sidebars to the left or right that can be uniquely specified for each page or post, 300px / 300px fixed width sidebars, 0-4 footer widget columns, almost zero layout images, related posts and post nav, featured stories and carousel, 5 post formats, good SEO, localisation support, social links, logo upload and many more useful admin panel features. Demo: http://demo.alx.media/x/?theme=Featureon == Installation == @@ -72,8 +72,26 @@ Screenshot images License: CC0 1.0 Universal (CC0 1.0) Source: https://stocksnap.io +Header images +1. https://stocksnap.io/photo/TNK87N7464 - CC0 1.0 Universal (CC0 1.0) +2. https://stocksnap.io/photo/SA20YXQRC4 - CC0 1.0 Universal (CC0 1.0) +3. https://stocksnap.io/photo/RKS9M8PY0X - CC0 1.0 Universal (CC0 1.0) +4. https://stocksnap.io/photo/EPNK1H7KBP - CC0 1.0 Universal (CC0 1.0) +5. https://stocksnap.io/photo/E4PSRGAB8Y - CC0 1.0 Universal (CC0 1.0) + +Subheader images +1. https://stocksnap.io/photo/UEQ0178WUT - CC0 1.0 Universal (CC0 1.0) +2. https://stocksnap.io/photo/IUJP9OI22I - CC0 1.0 Universal (CC0 1.0) +3. https://stocksnap.io/photo/693PZB7YZT - CC0 1.0 Universal (CC0 1.0) +4. https://stocksnap.io/photo/CLCT9SWF9E - CC0 1.0 Universal (CC0 1.0) +5. https://stocksnap.io/photo/13LKG0AGI0 - CC0 1.0 Universal (CC0 1.0) +6. https://stocksnap.io/photo/1C1A9389B4 - CC0 1.0 Universal (CC0 1.0) + == Changelog == += 2.5.0 - 2022-08-25 = +* Changed theme from premium to free + = 2.4.9 - 2022-05-30 = * Fixed ol and ul box-sizing content-box styling for WP 6.0 * Updated to Kirki 4.0.24 diff --git a/style.css b/style.css index 605bb01..407b6d8 100644 --- a/style.css +++ b/style.css @@ -1,14 +1,14 @@ /* Theme Name: Featureon Theme URI: http://alx.media/themes/featureon/ -Version: 2.4.9 +Version: 2.5.0 Requires at least: 5.0 Requires PHP: 5.6 Tested up to: 6.0 -Description: Featureon is a responsive 100% high resolution theme for blogs and magazines. Unique toggle sidebars give a great browsing and reading experience on both tablet and mobile. The feature list is long: Unlimited accent colors, unlimited widget areas, 0-2 sidebars to the left or right that can be uniquely specified for each page or post, 300px / 300px fixed width sidebars, 0-4 footer widget columns, almost zero layout images, related posts and post nav, featured stories and carousel, 5 post formats, good SEO, 2 flexible custom widgets, localisation support, social links, logo upload and many more useful admin panel features. +Description: Featureon is a responsive 100% high resolution theme for blogs and magazines. Unique toggle sidebars give a great browsing and reading experience on both tablet and mobile. The feature list is long: Unlimited accent colors, 0-2 sidebars to the left or right that can be uniquely specified for each page or post, 300px / 300px fixed width sidebars, 0-4 footer widget columns, almost zero layout images, related posts and post nav, featured stories and carousel, 5 post formats, good SEO, localisation support, social links, logo upload and many more useful admin panel features. Demo: http://demo.alx.media/x/?theme=Featureon Author: Alexander Agnarson Author URI: http://alx.media -Tags: blog, one-column, two-columns, three-columns, right-sidebar, left-sidebar, custom-colors, custom-menu, featured-images, flexible-header, full-width-template, post-formats, sticky-post, theme-options, threaded-comments, translation-ready, custom-logo, custom-header, custom-background +Tags: blog, one-column, two-columns, three-columns, right-sidebar, left-sidebar, custom-colors, custom-menu, featured-images, flexible-header, full-width-template, post-formats, sticky-post, theme-options, threaded-comments, translation-ready, custom-logo, custom-header, custom-background, news, entertainment, footer-widgets Text Domain: featureon Copyright: (c) 2018 Alexander "Alx" Agnarson @@ -593,7 +593,9 @@ box-shadow: 0 1px 0 rgba(255,255,255,0.1); } .toggle-search .svg-icon { fill: #333; margin: 0 auto; } .toggle-search #svg-close { display: none; } .toggle-search.active #svg-search { display: none; } -.toggle-search.active #svg-close { display: block; } +.toggle-search.active #svg-close { display: block; fill: rgba(0,0,0,0.4); } +.toggle-search:focus #svg-search, +.toggle-search:focus #svg-close { fill: rgba(0,0,0,0.6); } /* ------------------------------------------------------------------------- * @@ -696,6 +698,8 @@ box-shadow: 0 1px 0 rgba(255,255,255,0.1); } .nav-menu.mobile.toggled > div > ul.menu ul.sub-menu { visibility: hidden; transition: all 0.3s ease; } .nav-menu.mobile.toggled > div > ul.menu, .nav-menu.mobile.toggled > div > ul.menu ul.sub-menu.active { visibility: visible; } +.nav-menu.mobile button:focus, +.menu-toggle:focus { background: rgba(0,0,0,0.04); } /* menu styling */ .nav-menu a { color: #fff; } @@ -1805,6 +1809,6 @@ user-select: none; /* ------------------------------------------------------------------------- */ /* Text meant only for screen readers. */ .screen-reader-text{ border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute!important; width: 1px; word-wrap: normal!important; } -.screen-reader-text:focus { background-color: #fff; border-radius: 3px; box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1); clip: auto!important; clip-path: none; color: #333; display: block; font-size: 14px; font-size: 0.875rem; font-weight: bold; height: auto; right: 5px; line-height: normal; padding: 15px 23px 14px; text-decoration: none; top: 5px; width: auto; z-index: 100000; } +.screen-reader-text:focus { background-color: #fff; border-radius: 3px; box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1); clip: auto!important; clip-path: none; color: #333; display: block; font-size: 14px; font-size: 0.875rem; font-weight: bold; height: auto; left: auto; right: 5px; line-height: normal; padding: 15px 23px 14px; text-decoration: none; top: 5px; width: auto; z-index: 100000; } /* Do not show the outline on the skip link target. */ #page[tabindex="-1"]:focus{ outline: 0; } \ No newline at end of file