=== Scholar Publications Fetcher === Contributors: valsze Tags: scholar, publications, academic, research, bibliography Requires at least: 5.2 Tested up to: 7.1 Stable tag: 2.3.3 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Fetch, cache, customize, and display Google Scholar profiles and publications with an easy WordPress admin settings panel. == Description == Scholar Publications Fetcher retrieves profile details and publications from a public Google Scholar profile and renders them in a responsive layout inside WordPress. The plugin now includes an admin settings page, so site owners can configure publication defaults and visual styling without manually editing shortcode attributes. Key features: * Standalone Scholar Publications admin menu. * Native Gutenberg block for the default WordPress block editor. * Elementor widget when Elementor is active. * Optional Google Scholar profile header with photo, name, affiliation, verified email, homepage, and research interests. * Default Google Scholar User ID, count, order, caching, pagination, and abstract options. * Appearance controls for colors, typography, profile text alignment, width, spacing, corner radius, shadows, and hover motion. * Shortcode attributes still work for one-off overrides. * Fetches multiple Google Scholar result pages, not just the first page. * Supports `count="all"` to show the full publication list. * Uses WordPress transients for caching. * Includes a responsive layout with dark mode support. * No API key is required. == Installation == 1. Upload the plugin to `/wp-content/plugins/` or install it through the WordPress admin. 2. Activate **Scholar Publications Fetcher** from the Plugins screen. 3. Open **Scholar Publications** in the WordPress admin menu and enter your Google Scholar User ID. 4. Add the shortcode to a page, post, or widget. You can also insert the publication list from the WordPress block editor by searching for **Scholar Publications** in the block inserter. If Elementor is active, search for **Scholar Publications** in the Elementor widget panel. Basic usage after saving settings: `[schopufe_publications]` Override settings for a specific page: `[schopufe_publications user_id="YOUR_SCHOLAR_ID" count="30" show_abstract="true"]` Show all publications, oldest first: `[schopufe_publications count="all" order="asc"]` Show the public Google Scholar profile header: `[schopufe_publications show_profile="true"]` == Frequently Asked Questions == = Where is the settings page? = Go to **Scholar Publications** in the WordPress admin menu. = Do I still need shortcode attributes? = No. Save your defaults in the settings page and use `[schopufe_publications]`. Shortcode attributes are still available when you want to override settings on a specific page. = Can I insert it as a block? = Yes. In the default WordPress block editor, search for **Scholar Publications** in the block inserter. = Does it support Elementor? = Yes. If Elementor is active, the plugin registers a **Scholar Publications** widget under the general widgets panel. = Can it show Google Scholar profile details? = Yes. Enable the profile header to display the public profile photo, name, affiliation, verified email, homepage, and research interests above the publication list. = Can I customize the visual style without CSS? = Yes. The settings page includes controls for colors, font style, maximum width, spacing, card radius, shadow, and hover motion. = Can I show all of my publications? = Yes. Use `count="all"` in the settings page or shortcode to fetch and display the full publication list. = What does `max_pages` do? = `max_pages` limits how many Google Scholar result pages will be fetched. This acts as a safety cap for large profiles. = What values should I use for `page_size`? = Google Scholar reliably supports page sizes of 20 and 100. The plugin normalizes requests to those values. = Do I need an API key? = No. The plugin reads the public HTML of your Google Scholar profile using the WordPress HTTP API and PHP DOM. == Screenshots == 1. Admin settings page for publication defaults. 2. Admin appearance controls for customizing publication cards. 3. Responsive publication cards in the default layout. 4. Publication list with abstracts enabled. == Changelog == = 2.3.3 = * Security: restrict Scholar-specific remote detail fetches to Google Scholar URLs. * Security: harden HTML parsing against external network entity loading. * Hardening: validate Google Scholar User IDs and cap shortcode `max_pages`. = 2.3.2 = * Feature: added an optional Google Scholar profile header. * Feature: profile header can display public photo, name, affiliation, verified email, homepage, and research interests. * Enhancement: added profile header controls to shortcode, Gutenberg block, Elementor widget, and admin settings. * Enhancement: added profile text alignment and improved research-interest chips for dark mode. = 2.3.1 = * Feature: added a native Gutenberg block. * Feature: added an Elementor widget when Elementor is active. = 2.3.0 = * Feature: added an admin settings page for publication defaults. * Feature: added appearance controls for colors, typography, width, spacing, radius, shadows, and hover motion. * Enhancement: shortcode now uses saved settings as defaults. * Enhancement: added a Settings link on the Plugins screen. = 2.2.1 = * Compatibility: hardened DOM parsing for PHP 8.5. * Fix: corrected the minimum PHP requirement to 7.4. * Fix: normalized Google Scholar page sizes to supported values. * Fix: cache keys now account for `max_pages`. * Docs: synchronized the readme version and stable tag. = 2.2.0 = * Added full pagination across Google Scholar result pages. * Added `order`, `count="all"`, `max_pages`, and `page_size` shortcode support. * Improved transient caching and DOM parsing safeguards. = 2.1.0 = * Refined layout, dark mode support, and mobile responsiveness. = 2.0.0 = * Major refactor with object-oriented structure and shortcode improvements. = 1.5.4 = * Minor CSS refinements and code comments. = 1.0.0 = * Initial release. == Upgrade Notice == = 2.3.3 = Adds security hardening for remote requests, HTML parsing, and shortcode input limits.