[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fI853D3-KSHd9y2POMSvFgppG66OK5szhUKmxCIJU598":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":15,"tags":18,"homepage":24,"download_link":25,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":34,"analysis":129,"fingerprints":366},"full-twitter-integration","Full Twitter Integration","1.0.0","agrimbautomas","https:\u002F\u002Fprofiles.wordpress.org\u002Fagrimbautomas\u002F","\u003Ch4>Getting Started\u003C\u002Fh4>\n\u003Cp>With this plugin you will be able to display tweets all around your site with just a few simple steps. You don’t need any programming or technical skills for this.\u003Cbr \u002F>\nTrust me, it’s really simple 😉\u003C\u002Fp>\n\u003Cp>Just choose where do you want to display the tweets.\u003C\u002Fp>\n\u003Cp>Will they be in a Widget? In a post content? Or in your code?\u003C\u002Fp>\n\u003Ch4>Display tweets in a widget, couldn’t be easier\u003C\u002Fh4>\n\u003Cp>Simple as any other \u003Ca href=\"\u002F\u002Fcodex.wordpress.org\u002FWordPress_Widgets\"\" rel=\"nofollow ugc\">WordPress Widget\u003C\u002Fa>, just go Appearance>Widgets and choose the most suitable FTI Widget for you, or choose them all!\u003C\u002Fp>\n\u003Cp>You will be able to set the \u003Cstrong>Number of tweets to display\u003C\u002Fstrong>, and the option to hide\u002Fshow the \u003Cstrong>User profile image\u003C\u002Fstrong> and the \u003Cstrong>Tweets images\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Ch4>Tweets in your content, just add a shorcode\u003C\u002Fh4>\n\u003Cp>Use the \u003Ca href=\"\u002F\u002Fen.support.wordpress.com\u002Fdisplay-posts-shortcode\u002F\"\" rel=\"nofollow ugc\">WordPress Shortcodes\u003C\u002Fa> to display the tweets on your Posts\u002FPages and filter them as you wish. Set a \u003Cstrong>Hashtag\u003C\u002Fstrong> or a \u003Cstrong>Username\u003C\u002Fstrong> and set the values (optional) to customize the Tweets. Just add the Shortcode to your post\u002Fpage content and that’s all!\u003C\u002Fp>\n\u003Cp>This shortcode sample will display PearlJam’s Tweets with their profile images and limit them to 5.\u003Cbr \u002F>\n     [fti-list username=”PearlJam” limit=”5″ profile_image=”true”]\u003C\u002Fp>\n\u003Cp>And here it’s getting Tweets with the hashtag “#Wordpress” including the images content of each and with a medium size.\u003Cbr \u002F>\n    [fti-list hashtag=”Wordpress” images=”true” images_size=”medium”]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Shortcode parameters\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>hashtag (Required) – [yourHashtag] Default: none. \u003C\u002Fli>\n\u003Cli>username (Required) – [aTwitterUserName] Default: none. \u003C\u002Fli>\n\u003Cli>images (Optional) – [true\u002Ffalse] Default: false. \u003C\u002Fli>\n\u003Cli>images_size (Optional) – [thumb\u002Fsmall\u002Fmedium\u002Flarge] Default: thumb. \u003C\u002Fli>\n\u003Cli>profile_image (Optional) – [true\u002Ffalse] Default: false.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Display Tweets in your code\u003C\u002Fh4>\n\u003Cp>We have a really simple API to get the tweets you want in your code. Customize the parameters and get an Array with the Tweets (objects).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>These are our functions:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>get_tweets_by_hashtag($hashtag, $limit) \u003C\u002Fli>\n\u003Cli>get_tweets_by_user($user_name, $limit) \u003C\u002Fli>\n\u003Cli>get_user_tweets($user_name, $limit) \u003C\u002Fli>\n\u003Cli>get_timeline_tweets($user_name) \u003C\u002Fli>\n\u003Cli>get_user_data($user_name) \u003C\u002Fli>\n\u003Cli>get_my_data() \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The \u003Cstrong>$user_name\u003C\u002Fstrong> should be the Twitter screen name, the one with @. Eg: PaulMcCartney\u003C\u002Fp>\n","Display any kind of tweet with just a few simple steps and no programming skills",10,1566,100,1,"","4.7.32","3.0.1",[19,20,21,22,23],"api","integration","social","twitter","widgets","http:\u002F\u002Ffull-twitter-integration.atomas.com.ar","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ffull-twitter-integration.zip",0,null,"2026-03-15T10:48:56.248Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":14,"total_installs":11,"avg_security_score":13,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},30,94,"2026-04-04T13:57:39.226Z",[35,56,71,88,104],{"slug":36,"name":37,"version":38,"author":39,"author_profile":40,"description":41,"short_description":42,"active_installs":43,"downloaded":44,"rating":13,"num_ratings":45,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":15,"tags":49,"homepage":52,"download_link":53,"security_score":54,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":55},"teg-twitter-api","Twitter API Master – Twitter Widgets For WordPress","1.2.5","Theme Egg","https:\u002F\u002Fprofiles.wordpress.org\u002Fthemeegg\u002F","\u003Cp>This plugin help you to show twitter tweets, trends, post to twitter feature.\u003C\u002Fp>\n\u003Cp>Some demo shortcode of this plugin\u003C\u002Fp>\n\u003Cp>For Tweet shortcode please type [twitter_feeds count=”5″]\u003Cbr \u002F>\nFor Trends shortcode please type [twitter_trends count=”3″]\u003C\u002Fp>\n\u003Cul>\n\u003Cli>[twitter_feeds count=”5″]\u003C\u002Fli>\n\u003Cli>[twitter_trends count=”3″ ]\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>You can dragged and dropped teg feed and trends widget from widget panel also.\u003C\u002Fp>\n\u003Cp>You can change shortcode attribute as per requirement, please visit our official page \u003Ca href=\"http:\u002F\u002Fdocs.themeegg.com\u002Fdocs\u002Fteg-twitter-api\u002F\" rel=\"nofollow ugc\">http:\u002F\u002Fdocs.themeegg.com\u002Fdocs\u002Fteg-twitter-api\u002F\u003C\u002Fa> for more information.\u003C\u002Fp>\n\u003Cp>Get free support at https:\u002F\u002Fthemeegg.com\u002Fsupport-forum\u002F\u003C\u002Fp>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 4.5 or later.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Contribute\u003C\u002Fh4>\n\u003Cp>You can contribute to the source code in our \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fthemeegg\u002Fteg-twitter-api\u002F\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> page.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Twitter Tweets shortcode and widget\u003C\u002Fli>\n\u003Cli>Twitter Trends shortcode and widget\u003C\u002Fli>\n\u003Cli>Also tweet your wordpress post to twitter\u003C\u002Fli>\n\u003Cli>Official twitter timeline widgets and shortcode\u003C\u002Fli>\n\u003C\u002Fol>\n","Post to twitter, twitter feeds, twitter trends shortcode and widget wordpres plugin.",50,4561,2,"2018-01-26T08:12:00.000Z","4.9.29","4.5",[19,50,51,22,23],"settings","shortcode","https:\u002F\u002Fthemeegg.com\u002Fplugins\u002Fteg-twitter-api","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fteg-twitter-api.1.2.5.zip",85,"2026-03-15T15:16:48.613Z",{"slug":57,"name":58,"version":17,"author":59,"author_profile":60,"description":61,"short_description":62,"active_installs":11,"downloaded":63,"rating":13,"num_ratings":45,"last_updated":64,"tested_up_to":65,"requires_at_least":66,"requires_php":15,"tags":67,"homepage":69,"download_link":70,"security_score":54,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":55},"my-extreme-twitter","My Extreme Twitter","h3mdsa","https:\u002F\u002Fprofiles.wordpress.org\u002Fh3mdsa\u002F","\u003Cp>This plugin will add an widget to use Twitter’s tweet.\u003C\u002Fp>\n\u003Cp>Plugin Features\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Twitter stream\u003C\u002Fli>\n\u003Cli>Header enable\u002FDisable\u003C\u002Fli>\n\u003Cli>Theme selection\u003C\u002Fli>\n\u003Cli>You have many option how you want to use your fan page like page.\u003C\u002Fli>\n\u003Cli>Very Lightweight.\u003C\u002Fli>\n\u003Cli>Easy to use\u003Cbr \u002F>\n& many More.\u003C\u002Fli>\n\u003C\u002Ful>\n","This plugin will add an widget to use Twitter's tweet.",2885,"2014-03-15T02:12:00.000Z","3.7.41","3.2",[68,21,22],"api-1-1","http:\u002F\u002Faaryanahmed.net\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmy-extreme-twitter.zip",{"slug":72,"name":73,"version":74,"author":75,"author_profile":76,"description":77,"short_description":78,"active_installs":11,"downloaded":79,"rating":26,"num_ratings":26,"last_updated":80,"tested_up_to":81,"requires_at_least":17,"requires_php":15,"tags":82,"homepage":86,"download_link":87,"security_score":54,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":55},"wp-simple-twitter-feed","WP Simple Twitter Feed","1.0.3","Hapiuc Robert","https:\u002F\u002Fprofiles.wordpress.org\u002Fpsdtohtmlguru\u002F","\u003Cp>WP Simple Twitter Feed it’s a plugin that allows users to create easy twitter feeds. The tweets are received through Twitter API, this allows us not to slow down the front-end.\u003C\u002Fp>\n\u003Cp>The plugin it’s user and developer friendly, the user can choose from two main styles and the developers can use their own HTML code.\u003C\u002Fp>\n","Simple Twitter Feed WordPress Plugin, friendly with developers!",1618,"2015-09-09T07:33:00.000Z","4.3.34",[21,83,22,84,85],"social-media","twitter-api","widget","http:\u002F\u002Fwww.9pixels.co","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-simple-twitter-feed.1.0.3.zip",{"slug":89,"name":90,"version":91,"author":90,"author_profile":92,"description":93,"short_description":94,"active_installs":26,"downloaded":95,"rating":26,"num_ratings":26,"last_updated":15,"tested_up_to":96,"requires_at_least":97,"requires_php":98,"tags":99,"homepage":15,"download_link":103,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"optipub","OptiPub","1.0.14","https:\u002F\u002Fprofiles.wordpress.org\u002Foptipub\u002F","\u003Cp>OptiPub synchronizes content from the OptiPub platform to your WordPress installation. Creates custom post types for Resources, Videos, FAQs and Authors with automated sync every 5 minutes via WP-Cron.\u003C\u002Fp>\n\u003Cp>Features: Custom post types (Resources, Videos, FAQs, Authors), automated content synchronization via WP-Cron, secure API authentication with encrypted token storage, multiple publication support, widget integration with custom content, tag and category management, static and dynamic pages sync, redirect handling, theme template integration, and file copying utilities.\u003C\u002Fp>\n\u003Ch3>Source Code for Minified Files\u003C\u002Fh3>\n\u003Cp>This plugin includes one minified JavaScript file (\u003Ccode>public\u002Fjs\u002Fvideo.js\u003C\u002Fcode>) which is a third-party library. The source code for this minified file is publicly available:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Video.js v4.6.3\u003C\u002Fstrong> (Location: \u003Ccode>public\u002Fjs\u002Fvideo.js\u003C\u002Fcode>)\u003Cbr \u002F>\n* \u003Cstrong>Source Code Repository:\u003C\u002Fstrong> https:\u002F\u002Fgithub.com\u002Fvideojs\u002Fvideo.js\u002Ftree\u002Fv4.6.3\u003Cbr \u002F>\n* \u003Cstrong>License:\u003C\u002Fstrong> Apache 2.0\u003Cbr \u002F>\n* \u003Cstrong>Documentation:\u003C\u002Fstrong> https:\u002F\u002Fdocs.videojs.com\u002F\u003C\u002Fp>\n\u003Cp>All other JavaScript and CSS files in this plugin (\u003Ccode>public\u002Fjs\u002Farchive-filters.js\u003C\u002Fcode>, \u003Ccode>public\u002Fjs\u002Fgtm.js\u003C\u002Fcode>, \u003Ccode>public\u002Fjs\u002Finit.js\u003C\u002Fcode>, \u003Ccode>public\u002Fjs\u002Flogin-forms.js\u003C\u002Fcode>, \u003Ccode>public\u002Fjs\u002Fnavigation-collapse.js\u003C\u002Fcode>, and \u003Ccode>public\u002Fcss\u002Fsubscribers.css\u003C\u002Fcode>) are provided in their original, unminified source code format and are fully human-readable.\u003C\u002Fp>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin connects to the following external services:\u003C\u002Fp>\n\u003Ch4>Google Tag Manager\u003C\u002Fh4>\n\u003Cp>Provides tag management and analytics functionality when GTM containers are configured in OptiPub. Sends the container ID to www.googletagmanager.com on every page load. Data collection is controlled by your GTM configuration.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Service Provider: Google LLC  \u003C\u002Fli>\n\u003Cli>Terms of Use: https:\u002F\u002Fwww.google.com\u002Fanalytics\u002Ftag-manager\u002Fuse-policy\u002F  \u003C\u002Fli>\n\u003Cli>Privacy Policy: https:\u002F\u002Fpolicies.google.com\u002Fprivacy\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>YouTube\u003C\u002Fh4>\n\u003Cp>Embeds YouTube videos when video content is configured to use YouTube as the player. Sends video IDs to youtube.com\u002Fembed only when displaying YouTube video content. Data collection is controlled by YouTube’s privacy policy.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Service Provider: Google LLC (YouTube)  \u003C\u002Fli>\n\u003Cli>Terms of Use: https:\u002F\u002Fwww.youtube.com\u002Fstatic?template=terms  \u003C\u002Fli>\n\u003Cli>Privacy Policy: https:\u002F\u002Fpolicies.google.com\u002Fprivacy\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Wistia\u003C\u002Fh4>\n\u003Cp>Embeds Wistia videos when video content is configured to use Wistia as the player. Sends video IDs to fast.wistia.net only when displaying Wistia video content. Data collection is controlled by Wistia’s privacy policy.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Service Provider: Wistia, Inc.  \u003C\u002Fli>\n\u003Cli>Terms of Use: https:\u002F\u002Fwistia.com\u002Fterms  \u003C\u002Fli>\n\u003Cli>Privacy Policy: https:\u002F\u002Fwistia.com\u002Fprivacy\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>OptiPub API\u003C\u002Fh4>\n\u003Cp>Synchronizes content (publications, resources, videos, FAQs, authors, tags, categories, redirects) from the OptiPub platform to WordPress. Sends authenticated API requests with encrypted tokens to your configured OptiPub domain (typically \u003Ccode>https:\u002F\u002F\u003Cdomain>.app.optipub.com\u003C\u002Fcode>) via WP-Cron at configured intervals (default: every 5 minutes). Also creates edit links to OptiPub content management pages in WordPress admin.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Service Provider: OptiPub  \u003C\u002Fli>\n\u003Cli>Terms of Use & Privacy Policy: Please refer to your OptiPub service agreement for terms of use and privacy policy.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Third Party Libraries\u003C\u002Fh3>\n\u003Cp>This plugin includes one minified JavaScript library for video functionality:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Video.js v4.6.3\u003C\u002Fstrong> – Used for video player functionality\n\u003Cul>\n\u003Cli>\u003Cstrong>Source Code Repository:\u003C\u002Fstrong> https:\u002F\u002Fgithub.com\u002Fvideojs\u002Fvideo.js\u002Ftree\u002Fv4.6.3\u003C\u002Fli>\n\u003Cli>\u003Cstrong>License:\u003C\u002Fstrong> Apache 2.0\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Location in Plugin:\u003C\u002Fstrong> \u003Ccode>public\u002Fjs\u002Fvideo.js\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Documentation:\u003C\u002Fstrong> https:\u002F\u002Fdocs.videojs.com\u002F\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The source code for this minified library is publicly available at the GitHub repository link above. This plugin does not include any custom build process – the minified file is used directly from the Video.js project.\u003C\u002Fp>\n\u003Ch3>Development Documentation\u003C\u002Fh3>\n\u003Cp>Technical documentation for developers working with the OptiPub plugin. Topics covered:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>OptiPub Introduction\u003C\u002Fli>\n\u003Cli>Prepare\u003C\u002Fli>\n\u003Cli>Installation\u003C\u002Fli>\n\u003Cli>Activation\u003C\u002Fli>\n\u003Cli>OptiPub Admin Page (Save Changes Button, Clear Data Button)\u003C\u002Fli>\n\u003Cli>Cron Job & Troubleshooting\u003C\u002Fli>\n\u003Cli>Plugin Configurations (wp-config.php, Configuring WP-Cron)\u003C\u002Fli>\n\u003Cli>Deactivation & Rescheduling the cron job\u003C\u002Fli>\n\u003Cli>Uninstallation\u003C\u002Fli>\n\u003Cli>Theme dependencies\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>OptiPub Introduction\u003C\u002Fh3>\n\u003Cp>OptiPub syncs OptiPub Resources to a WordPress installation. The plugin schedules the WP-Cron event \u003Ccode>optipub_sync\u003C\u002Fcode> to sync Publications, Resources, Videos, FAQs, Authors, Pages, Custom Content, Tags, Categories and Redirects.\u003C\u002Fp>\n\u003Cp>The plugin creates Custom Post Types (CPTs): \u003Ccode>Resources\u003C\u002Fcode>, \u003Ccode>Videos\u003C\u002Fcode>, \u003Ccode>FAQs\u003C\u002Fcode> and \u003Ccode>Authors\u003C\u002Fcode>. Resources synced to these post types store OptiPub metadata and properties in the \u003Ccode>wp_postmeta\u003C\u002Fcode> table. OptiPub Tags are saved as WordPress Tags. OptiPub Resource Categories are saved as WordPress Categories.\u003C\u002Fp>\n\u003Cp>WordPress Widgets can be created with OptiPub Custom Content from the \u003Ccode>OptiPub Admin\u003C\u002Fcode> page.\u003C\u002Fp>\n\u003Ch3>Prepare\u003C\u002Fh3>\n\u003Cp>From WordPress Admin: Settings > General, select timezone (recommended: ‘New York’) and click [Save Changes].\u003C\u002Fp>\n\u003Cp>OptiPub syncs with UTC but displays dates in EST. If you don’t select ‘New York’, website dates may differ from OptiPub dates. WordPress automatically converts \u003Ccode>post_date\u003C\u002Fcode> and \u003Ccode>post_modified\u003C\u002Fcode> to the selected timezone. Configure this before syncing data.\u003C\u002Fp>\n\u003Ch3>Bitnami permissions and configurations (Optional)\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> This section is only required if you’re using Bitnami WordPress. Skip this if you’re using a standard WordPress installation.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Increase upload file size:\u003C\u002Fstrong>\u003Cbr \u002F>\n1. \u003Ccode>sudo -i\u003C\u002Fcode>\u003Cbr \u002F>\n2. \u003Ccode>sudo nano \u002Fopt\u002Fbitnami\u002Fphp\u002Fetc\u002Fphp.ini\u003C\u002Fcode>\u003Cbr \u002F>\n3. Update \u003Ccode>upload_max_filesize\u003C\u002Fcode>, e.g. \u003Ccode>upload_max_filesize = 128M\u003C\u002Fcode>\u003Cbr \u002F>\n4. Restart: \u003Ccode>sudo \u002Fopt\u002Fbitnami\u002Fctlscript.sh restart\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Set permissions before activation\u003C\u002Fstrong> (required for proper activation and uninstallation – vendor files need deletion permissions):\u003C\u002Fp>\n\u003Cp>Note: These commands apply to all WP plugins. Modify paths to target only OptiPub if needed.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>sudo find \u002Fhome\u002Fbitnami\u002Fapps\u002Fwordpress\u002Fhtdocs\u002Fwp-content\u002Fplugins\u002F -type d -exec chmod 775 {} \\;\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo find \u002Fhome\u002Fbitnami\u002Fapps\u002Fwordpress\u002Fhtdocs\u002Fwp-content\u002Fplugins\u002F -type f -exec chmod 664 {} \\;\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo chown -R bitnami:daemon \u002Fhome\u002Fbitnami\u002Fapps\u002Fwordpress\u002Fhtdocs\u002Fwp-content\u002Fplugins\u002F\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>This sets user\u002Fgroup to \u003Ccode>bitnami:daemon\u003C\u002Fcode>, file permissions to 664 (read\u002Fwrite for user\u002Fgroup, read for others), and folder permissions to 775 (read\u002Fwrite\u002Fexecute for user\u002Fgroup, read\u002Fexecute for others).\u003C\u002Fp>\n\u003Ch3>Activation\u003C\u002Fh3>\n\u003Cp>Activate from Plugins page. After activation, a green \u003Cstrong>OptiPub Admin\u003C\u002Fstrong> menu item appears in the left sidebar.\u003C\u002Fp>\n\u003Ch3>Activation Processes\u003C\u002Fh3>\n\u003Cp>During activation, three processes execute:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Override \u003Ccode>WP_CRON_LOCK_TIMEOUT\u003C\u002Fcode> constant\u003C\u002Fstrong> – Locates \u003Ccode>wp-config.php\u003C\u002Fcode> and overrides the constant. See \u003Ca href=\"#plugin-constants\" rel=\"nofollow ugc\">WP_CRON_LOCK_TIMEOUT\u003C\u002Fa>. Note: May fail in Bitnami if permissions aren’t set first.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Generate \u003Ccode>OPTIPUB_KEY\u003C\u002Fcode> encryption key\u003C\u002Fstrong> – Generates a random key stored in \u003Ccode>wp-config.php\u003C\u002Fcode> as \u003Ccode>OPTIPUB_KEY\u003C\u002Fcode>. Used to encrypt\u002Fdecrypt the API token during cron job execution.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Change permalink structure\u003C\u002Fstrong> – Changes permalink structure to \u003Ccode>\u002F%postname%\u002F\u003C\u002Fcode> to accommodate static pages with multiple slugs (e.g., \u003Ccode>https:\u002F\u002Fwww.energyandcapital.com\u002Fpubs-detailed\u002Fbab\u003C\u002Fcode> where \u003Ccode>pubs-detailed\u002Fbab\u003C\u002Fcode> is defined in \u003Ccode>\u002Fpages\u003C\u002Fcode> OptiPub API).\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>OptiPub Admin Page\u003C\u002Fh3>\n\u003Cp>The green menu icon opens the Admin Page for migrating data from the OptiPub API.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>OptiPub Sync Options:\u003C\u002Fstrong>\u003Cbr \u002F>\n1. \u003Cstrong>OptiPub Domain\u003C\u002Fstrong> – HTTPS URL of the OptiPub API\u003Cbr \u002F>\n2. \u003Cstrong>API Token\u003C\u002Fstrong> – The provided API Token from OptiPub will be used to authenticate with the API. Encrypted and stored in database, decrypted for API calls\u003Cbr \u002F>\n3. \u003Cstrong>Open Graph Image Link\u003C\u002Fstrong> – Backup\u002Fdefault image URL. Access with:\u003Cbr \u002F>\n       \u003Ccode>function get_optipub_opengraph_image() {\u003Cbr \u002F>\n      return get_option(\\OptiPub\\Base\\Constants::OPTIPUB_OPENGRAPH_IMAGE_LINK);\u003Cbr \u002F>\n   }\u003C\u002Fcode>\u003Cbr \u002F>\n4. \u003Cstrong>WP Auth Token\u003C\u002Fstrong> – Create a WP Auth Token to authenticate subscriber logins through OptiPub\u003Cbr \u002F>\n5. \u003Cstrong>Home Page Template\u003C\u002Fstrong> – Template name from OptiPub:\u003Cbr \u002F>\n   – OptiPub > Administration > Templates – create template with \u003Ccode>.php\u003C\u002Fcode> extension (e.g., \u003Ccode>optipub_home_page.php\u003C\u002Fcode>)\u003Cbr \u002F>\n   – OptiPub > Content > Pages – create page with path \u003Ccode>\u002F\u003C\u002Fcode> using the template\u003Cbr \u002F>\n   – Optional: OptiPub > Content > Redirects – create redirect from \u003Ccode>domain.com\u002Fhome\u003C\u002Fcode> to \u003Ccode>https:\u002F\u002Fwww.domain.com\u002F\u003C\u002Fcode>\u003Cbr \u002F>\n6. \u003Cstrong>Publication Dropdown\u003C\u002Fstrong> – Generated after \u003Ccode>OptiPub Domain\u003C\u002Fcode> and \u003Ccode>API Token\u003C\u002Fcode> are provided and \u003Ccode>Save changes\u003C\u002Fcode> is clicked\u003Cbr \u002F>\n7. \u003Cstrong>Publication Domain Id\u003C\u002Fstrong> – Publication domain ID (integer) used to retrieve redirects\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Copy Files To Theme\u003C\u002Fstrong> (feature complete – documentation under construction)\u003Cbr \u002F>\nView more documentation in the plugin ‘OptiPub Admin’ page\u003C\u002Fp>\n\u003Col>\n\u003Cli>Files copied to \u003Ccode>[theme-directory]\u002Finc\u002Foptipub\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Select file categories and click [Copy Files]\u003C\u002Fli>\n\u003Cli>Reference from current location or use as integration guide\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>If copying \u003Ccode>Helper Functions\u003C\u002Fcode>, copy content from \u003Ccode>[theme-directory]\u002Finc\u002Foptipub\u002Fphp\u002Fadd_to_bottom_of_functions.php.txt\u003C\u002Fcode> to your theme’s \u003Ccode>functions.php\u003C\u002Fcode>. \u003Ccode>include\u003C\u002Fcode> statements and filter\u002Faction calls are commented out. Review functions before uncommenting.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Custom Content Widget Sidebars\u003C\u002Fstrong> (feature complete – documentation under construction)\u003Cbr \u002F>\nView more documentation in the plugin ‘OptiPub Admin’ page\u003C\u002Fp>\n\u003Cp>Create custom content macro in OptiPub > Content > Custom Content. Custom Content syncs to WordPress as options.\u003C\u002Fp>\n\u003Cp>Click [Create New Widget]:\u003Cbr \u002F>\n– \u003Cstrong>Title\u003C\u002Fstrong> – WordPress Admin Console\u003Cbr \u002F>\n– \u003Cstrong>Sidebar ID\u003C\u002Fstrong> – Display widget in theme templates\u003Cbr \u002F>\n– \u003Cstrong>File Name\u003C\u002Fstrong> – WordPress Sidebar Widget content file\u003Cbr \u002F>\n– \u003Cstrong>Description\u003C\u002Fstrong> – WordPress Admin Console\u003Cbr \u002F>\n– \u003Cstrong>Custom Content\u003C\u002Fstrong> – OptiPub custom content macro name\u003Cbr \u002F>\n– \u003Cstrong>Class Name\u003C\u002Fstrong> – CSS class for styling\u003Cbr \u002F>\n– \u003Cstrong>Before Widget\u003C\u002Fstrong> – HTML before widget\u003Cbr \u002F>\n– \u003Cstrong>After Widget\u003C\u002Fstrong> – HTML after widget\u003Cbr \u002F>\n– \u003Cstrong>Before Title\u003C\u002Fstrong> – HTML before title (displays Title if used)\u003Cbr \u002F>\n– \u003Cstrong>After Title\u003C\u002Fstrong> – HTML after title (displays Title if used)\u003C\u002Fp>\n\u003Cp>\u003Cstrong>How OptiPub Custom Content creates WordPress Sidebar Widgets:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Widget files created at:\u003Cbr \u002F>\n    \u003Ccode>[theme-directory]\u002Finc\u002Foptipub\u002Fwidget-templates\u002F\u003C\u002Fcode>File Name\u003Ccode>\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Default content:\u003Cbr \u002F>\n    \u003Ccode>\u003C?php echo get_option('{$custom_content_name}'); ?>\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Include in theme templates:\u003Cbr \u002F>\n    \u003Ccode>if (is_active_sidebar('sidebar-id')) {\u003Cbr \u002F>\n   dynamic_sidebar('sidebar-id');\u003Cbr \u002F>\n}\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch3>Save Changes Button\u003C\u002Fh3>\n\u003Cp>Validates API Domain and token, then stores \u003Ccode>Optipub Domain\u003C\u002Fcode>, \u003Ccode>Api Token\u003C\u002Fcode>, \u003Ccode>Publication\u003C\u002Fcode>, \u003Ccode>Publication Domain\u003C\u002Fcode>, \u003Ccode>Header Pencil Ad Macro\u003C\u002Fcode>, \u003Ccode>Article bottom Ad Macro\u003C\u002Fcode>, \u003Ccode>Signup Sidebar Macro\u003C\u002Fcode> in \u003Ccode>wp_options\u003C\u002Fcode> table.\u003C\u002Fp>\n\u003Cp>Schedules cron job to run every 5 minutes if \u003Ccode>Optipub Domain\u003C\u002Fcode>, \u003Ccode>Api Token\u003C\u002Fcode>, and \u003Ccode>Publication\u003C\u002Fcode> are provided correctly.\u003C\u002Fp>\n\u003Cp>After saving, an API call fetches publication metadata. Fetched metadata appears in the WordPress admin left menu. New CPT links appear in \u003Cstrong>green\u003C\u002Fstrong> to differentiate from other CPTs.\u003C\u002Fp>\n\u003Ch3>Clear Data Button\u003C\u002Fh3>\n\u003Cp>Clears all imported posts (articles, resources, reports, etc.). Publication metadata remains, but imported posts are deleted. Stops and reschedules the cron job. Use to reset the plugin after errors.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Important Note:\u003C\u002Fstrong> \u003Cem>The clear button stops the current cron job, deletes all posts imported from the API, and reschedules the cron job.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch3>Cron Job\u003C\u002Fh3>\n\u003Cp>Syncs content from the OptiPub API. Scheduled to run every \u003Ccode>CRON_INTERVAL_IN_SECONDS\u003C\u002Fcode> after \u003Ccode>OptiPub Domain\u003C\u002Fcode>, \u003Ccode>API key\u003C\u002Fcode>, and \u003Ccode>Publication\u003C\u002Fcode> are selected.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>First run:\u003C\u002Fstrong> Loads all content for Custom Post Types, dynamic pages (nav menu pages like Videos, FAQs, Authors), static pages (from \u003Ccode>\u002Fcontents\u002Fpages\u003C\u002Fcode> endpoint), and Widget contents (from \u003Ccode>\u002Fcustom-contents\u003C\u002Fcode> endpoint).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Subsequent runs:\u003C\u002Fstrong> Loads only new or updated content using the \u003Ccode>updated_at\u003C\u002Fcode> attribute and last cron run timestamp.\u003C\u002Fp>\n\u003Ch3>Troubleshooting the Cron Job\u003C\u002Fh3>\n\u003Cp>WP-CLI commands:\u003Cbr \u002F>\n– \u003Ccode>wp cron event list\u003C\u002Fcode> – Lists all cron jobs (\u003Ccode>optipub_sync\u003C\u002Fcode> is the plugin cron job)\u003Cbr \u002F>\n– \u003Ccode>wp cron event delete optipub_sync\u003C\u002Fcode> – Deletes the cron job. Use \u003Ccode>Save changes\u003C\u002Fcode> to reschedule.\u003C\u002Fp>\n\u003Ch3>Plugin Configurations\u003C\u002Fh3>\n\u003Cp>Constants control plugin behavior: Cron Job scheduling, error handling, widgetized areas, template directory paths.\u003C\u002Fp>\n\u003Cp>Constants defined in two places:\u003Cbr \u002F>\n1. \u003Ccode>wp-config.php\u003C\u002Fcode> – WordPress environment variables\u003Cbr \u002F>\n2. \u003Ccode>Plugin Constants\u003C\u002Fcode> ([plugin-directory]\u002Finc\u002FBase\u002FConstants.php) – Plugin runtime configuration\u003C\u002Fp>\n\u003Ch3>wp-config.php\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>WP_CRON_LOCK_TIMEOUT\u003C\u002Fstrong> – Defines cron job execution period (default: 60 seconds, can be changed to 3600 seconds for 60 minutes). Plugin attempts to write this during activation. If it fails, cron job won’t schedule and error appears:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Could not activate Cron Job since WP_CRON_LOCK_TIMEOUT is smaller than the expected value of: 3000 (e.x);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Configuring WP-Cron\u003C\u002Fh3>\n\u003Cp>WP-Cron documentation: https:\u002F\u002Fdeveloper.wordpress.org\u002Fplugins\u002Fcron\u002F\u003C\u002Fp>\n\u003Cp>Configuration in \u003Ccode>[plugin-directory]\u002Finc\u002FBase\u002FConstants.php\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>CRON_INTERVAL_IN_SECONDS\u003C\u002Fstrong> – Default: 60 – Interval in seconds for \u003Ccode>optipub_sync\u003C\u002Fcode> wp-cron job. Creates a lock option in \u003Ccode>wp_options\u003C\u002Fcode> table; cron won’t run again until it finishes and deletes the option.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>WP_CRON_LOCK_TIMEOUT\u003C\u002Fstrong> – Default: 3600 – Changes WP-Cron timeout in \u003Ccode>wp-config.php\u003C\u002Fcode>:\u003Cbr \u002F>\n   \u003Ccode>define( 'WP_CRON_LOCK_TIMEOUT', 3600 );\u003C\u002Fcode>\u003Cbr \u002F>\nPlugin updates this during Activation, when clearing plugin data, or when changing Publication.\u003C\u002Fp>\n\u003Cp>NOTE: WP-Cron checks for scheduled jobs on every page load. For more consistent intervals, create a system cron job (requires server access).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Crontab in Linux:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>PHP Command:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>* * * * * HTTP_HOST=www.domain.com $(which php) \u002Fopt\u002Fbitnami\u002Fwordpress\u002Fwp-cron.php >> \u002Fpath\u002Fto\u002Ffile.log 2>&1\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Configure \u003Ccode>HTTP_HOST\u003C\u002Fcode> to your site domain.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>WP-CLI:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>* * * * * sudo wp cron event run optipub_sync\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Note: Cannot log output and less reliable than PHP command.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Deactivation\u003C\u002Fh3>\n\u003Cp>Deactivate from Plugins page. Deactivation pauses execution, temporarily disables custom post types and admin page, and stops cron job schedule. Cron job won’t reschedule on reactivation. If cron is running during deactivation, it finishes its job, then gets deleted on next run.\u003C\u002Fp>\n\u003Ch3>Rescheduling the cron job\u003C\u002Fh3>\n\u003Cp>After deactivation clears the cron job, reschedule via \u003Cstrong>Save Changes\u003C\u002Fstrong> button (even without data changes).\u003C\u002Fp>\n\u003Ch3>Uninstallation\u003C\u002Fh3>\n\u003Cp>Uninstall from WP Plugin page. Deactivate first to enable delete option.\u003C\u002Fp>\n\u003Cp>Uninstallation removes all plugin directory files. During uninstall, database commands delete all plugin-created content. Details in \u003Ccode>uninstall.php\u003C\u002Fcode> file.\u003C\u002Fp>\n\u003Ch3>Theme dependencies\u003C\u002Fh3>\n\u003Cp>Content loaded by the plugin is displayed via custom WP theme templates. Theme must provide templates for dynamic pages and widgets, and register\u002Fdisplay widgets. Page templates in theme root directory. Widget templates in theme \u003Ccode>widget-templates\u003C\u002Fcode> directory.\u003C\u002Fp>\n\u003Cp>Templates in plugin \u003Ccode>\u002Ftemplates\u003C\u002Fcode> directory are not used by the plugin but serve as guides for retrieving content from the WP Database. Only \u003Ccode>optipub_admin.php\u003C\u002Fcode> in \u003Ccode>\u002Ftemplates\u003C\u002Fcode> is used (decorates the Admin page).\u003C\u002Fp>\n\u003Cp>Theme must know Widget area IDs to register them in \u003Ccode>functions.php\u003C\u002Fcode>. IDs are documented above and found in plugin \u003Ccode>Constants.php\u003C\u002Fcode> class.\u003C\u002Fp>\n\u003Cp>template-parts\u002Farchives\u002F\u003Cbr \u002F>\n   optipub-filters.php\u003Cbr \u002F>\n   optipub-pagination_params.php\u003C\u002Fp>\n\u003Cp>template-parts\u002Fvideos\u002F\u003Cbr \u002F>\n   mv display.php videos_handler.php\u003C\u002Fp>\n","Sync OptiPub content to WordPress with automated cron jobs and custom post types.",481,"6.8.5","5.0","7.4",[100,101,102,89,23],"api-integration","content-sync","custom-post-types","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Foptipub.1.0.14.zip",{"slug":105,"name":106,"version":107,"author":108,"author_profile":109,"description":110,"short_description":111,"active_installs":112,"downloaded":113,"rating":114,"num_ratings":115,"last_updated":116,"tested_up_to":117,"requires_at_least":118,"requires_php":98,"tags":119,"homepage":124,"download_link":125,"security_score":126,"vuln_count":127,"unpatched_count":26,"last_vuln_date":128,"fetched_at":55},"nextend-facebook-connect","Nextend Social Login and Register","3.1.23","Nextendweb","https:\u002F\u002Fprofiles.wordpress.org\u002Fnextendweb\u002F","\u003Cp>Nextend Social Login is a professional, easy to use and free WordPress plugin. It lets your visitors  register and login to your site using their social profiles (Facebook, Google, X (formerly Twitter), etc.) instead of forcing them to spend valuable time to fill out the default registration form. Besides that, they don’t need to wait for validation emails or keep track of their username and password anymore.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Ftry-nextend-social-login.nextendweb.com\u002Fwp-login.php\" rel=\"nofollow ugc\">Demo\u003C\u002Fa>  |  \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=buPTza2-6xc&list=PLSawiBnEUNftt3EDqnP2jIXeh6q0pZ5D8&index=1\" rel=\"nofollow ugc\">Tutorial videos\u003C\u002Fa>  |  \u003Ca href=\"https:\u002F\u002Fsocial-login.nextendweb.com\u002Fdocumentation\u002F\" rel=\"nofollow ugc\">Docs\u003C\u002Fa>  |  \u003Ca href=\"https:\u002F\u002Fsocial-login.nextendweb.com\u002Fsupport\u002F\" rel=\"nofollow ugc\">Support\u003C\u002Fa>  |  \u003Ca href=\"https:\u002F\u002Fsocial-login.nextendweb.com\u002Fpricing\u002F\" rel=\"nofollow ugc\">Pro Addon\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FbuPTza2-6xc?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Cp>Nextend Social Login seamlessly integrates with your existing WordPress login and registration form. Existing users can add or remove their social accounts at their WordPress profile page. A single user can attach as many social account as they want allowing them to log in with Facebook, Google or X (formerly Twitter).\u003C\u002Fp>\n\u003Ch4>Three popular providers: Facebook, Google and X (formerly Twitter)\u003C\u002Fh4>\n\u003Cp>Providers are the services which the visitors can use to register and log in to your site. Nextend Social Login allows your visitors to log in with their account from the most popular social networks: Facebook, Google and X (formerly Twitter).\u003C\u002Fp>\n\u003Ch4>Free version features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>One click registration and login via Facebook, Google and X (formerly Twitter)\u003C\u002Fli>\n\u003Cli>Your current users can easily connect their Facebook, Google or X (formerly Twitter) profiles with their account\u003C\u002Fli>\n\u003Cli>Social accounts are tied to a WordPress user account so every account can be accessed with and without social account\u003C\u002Fli>\n\u003Cli>You can define custom redirect URL after the registration (upon first login) using any of the social accounts.\u003C\u002Fli>\n\u003Cli>You can define custom redirect URL after each login with any of the enabled social accounts.\u003C\u002Fli>\n\u003Cli>Display Facebook, Google, X (formerly Twitter) profile picture as avatar\u003C\u002Fli>\n\u003Cli>Login widget and shortcodes\u003C\u002Fli>\n\u003Cli>Customizable designs to match your site\u003C\u002Fli>\n\u003Cli>Editable and translatable texts on the login buttons\u003C\u002Fli>\n\u003Cli>Very simple to setup and use\u003C\u002Fli>\n\u003Cli>Clean, user friendly UI\u003C\u002Fli>\n\u003Cli>Fast and helpful support\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Additional features in the \u003Ca href=\"https:\u002F\u002Fsocial-login.nextendweb.com\u002F\" rel=\"nofollow ugc\">Pro addon\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WooCommerce compatibility\u003C\u002Fli>\n\u003Cli>BuddyPress compatibility\u003C\u002Fli>\n\u003Cli>UserPro compatibility\u003C\u002Fli>\n\u003Cli>Ultimate Member compatibility\u003C\u002Fli>\n\u003Cli>Easy Digital Downloads compatibility\u003C\u002Fli>\n\u003Cli>Pro providers: LinkedIn, Amazon, VKontakte, WordPress.com, Yahoo, PayPal, Disqus, Apple, GitHub, Microsoft, Line, Discord, Slack, TikTok, Steam, Twitch, Kakao, Reddit, Spotify and more coming soon\u003C\u002Fli>\n\u003Cli>Configure whether email address should be asked on registration at each provider\u003C\u002Fli>\n\u003Cli>Configure whether username should be asked on registration at each provider\u003C\u002Fli>\n\u003Cli>Choose from icons or wide buttons\u003C\u002Fli>\n\u003Cli>Several login layouts\u003C\u002Fli>\n\u003Cli>Restrict specific user roles from using the social logins. (You can restrict different roles for each provider.)\u003C\u002Fli>\n\u003Cli>Assign specific user roles to the newly registered users who use any social login provider. (You can set different roles for each provider.)\u003C\u002Fli>\n\u003Cli>Show the name of the linked providers in the Users table\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>After you activated the plugin configure and enable the provider you want to use, then the plugin will automatically\u003C\u002Fp>\n\u003Cul>\n\u003Cli>add the login buttons to the WordPress login page. See screenshot #1\u003C\u002Fli>\n\u003Cli>add the account linking buttons to the WordPress profile page. See screenshot #2\u003C\u002Fli>\n\u003C\u002Ful>\n","One click registration & login plugin for Facebook, Google, X (formerly Twitter) and more. Quick setup and easy configuration.",200000,7588989,98,441,"2026-02-23T09:51:00.000Z","6.9.4","4.9",[120,121,122,22,123],"facebook","google","social-login","x","https:\u002F\u002Fsocial-login.nextendweb.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnextend-facebook-connect.3.1.23.zip",89,6,"2025-11-27 14:54:41",{"attackSurface":130,"codeSignals":174,"taintFlows":347,"riskAssessment":348,"analyzedAt":365},{"hooks":131,"ajaxHandlers":161,"restRoutes":162,"shortcodes":163,"cronEvents":173,"entryPointCount":45,"unprotectedCount":26},[132,137,140,141,143,146,149,151,153,156,159],{"type":133,"name":134,"callback":135,"file":136,"line":54},"action","plugins_loaded","anonymous","includes\\class-full-twitter-integration.php",{"type":133,"name":138,"callback":135,"file":136,"line":139},"admin_enqueue_scripts",97,{"type":133,"name":138,"callback":135,"file":136,"line":114},{"type":133,"name":142,"callback":135,"file":136,"line":13},"admin_menu",{"type":133,"name":144,"callback":135,"file":136,"line":145},"admin_init",101,{"type":133,"name":147,"callback":135,"file":136,"line":148},"widgets_init",103,{"type":133,"name":144,"callback":135,"file":136,"line":150},104,{"type":133,"name":144,"callback":135,"file":136,"line":152},105,{"type":133,"name":154,"callback":135,"file":136,"line":155},"init",106,{"type":133,"name":157,"callback":135,"file":136,"line":158},"wp_enqueue_scripts",118,{"type":133,"name":157,"callback":135,"file":136,"line":160},119,[],[],[164,169],{"tag":165,"callback":166,"file":167,"line":168},"fti-list","setup_fti_list","admin\\class-full-twitter-integration-admin.php",151,{"tag":170,"callback":171,"file":167,"line":172},"fti-slider","setup_fti_slider",152,[],{"dangerousFunctions":175,"sqlUsage":176,"outputEscaping":178,"fileOperations":14,"externalRequests":14,"nonceChecks":26,"capabilityChecks":14,"bundledLibraries":346},[],{"prepared":26,"raw":26,"locations":177},[],{"escaped":179,"rawEcho":180,"locations":181},18,95,[182,186,187,188,189,190,192,194,196,198,200,202,204,206,208,210,212,214,217,219,221,222,224,226,228,230,232,234,236,238,240,243,245,247,249,251,253,255,256,258,259,260,262,264,267,268,269,270,271,272,273,275,276,278,280,281,283,285,286,287,288,289,290,291,292,293,294,297,299,300,302,304,306,308,310,312,314,316,318,320,322,324,325,326,327,329,331,333,334,336,337,339,341,342,344],{"file":183,"line":184,"context":185},"admin\\class-full-twitter-integration-admin-views.php",92,"raw output",{"file":183,"line":32,"context":185},{"file":183,"line":150,"context":185},{"file":183,"line":152,"context":185},{"file":183,"line":155,"context":185},{"file":183,"line":191,"context":185},107,{"file":183,"line":193,"context":185},108,{"file":183,"line":195,"context":185},169,{"file":183,"line":197,"context":185},196,{"file":183,"line":199,"context":185},239,{"file":183,"line":201,"context":185},255,{"file":183,"line":203,"context":185},275,{"file":183,"line":205,"context":185},276,{"file":183,"line":207,"context":185},279,{"file":183,"line":209,"context":185},289,{"file":183,"line":211,"context":185},347,{"file":183,"line":213,"context":185},395,{"file":215,"line":216,"context":185},"admin\\widgets\\fti-tweets-by-hashtag-widget.php",37,{"file":215,"line":218,"context":185},48,{"file":215,"line":220,"context":185},49,{"file":215,"line":43,"context":185},{"file":215,"line":223,"context":185},54,{"file":215,"line":225,"context":185},55,{"file":215,"line":227,"context":185},56,{"file":215,"line":229,"context":185},60,{"file":215,"line":231,"context":185},61,{"file":215,"line":233,"context":185},63,{"file":215,"line":235,"context":185},66,{"file":215,"line":237,"context":185},67,{"file":215,"line":239,"context":185},69,{"file":241,"line":242,"context":185},"admin\\widgets\\fti-tweets-by-timeline.php",40,{"file":241,"line":244,"context":185},51,{"file":241,"line":246,"context":185},52,{"file":241,"line":248,"context":185},53,{"file":241,"line":250,"context":185},57,{"file":241,"line":252,"context":185},58,{"file":241,"line":254,"context":185},59,{"file":241,"line":233,"context":185},{"file":241,"line":257,"context":185},64,{"file":241,"line":235,"context":185},{"file":241,"line":239,"context":185},{"file":241,"line":261,"context":185},70,{"file":241,"line":263,"context":185},72,{"file":265,"line":266,"context":185},"admin\\widgets\\fti-tweets-by-user-widget.php",39,{"file":265,"line":43,"context":185},{"file":265,"line":244,"context":185},{"file":265,"line":246,"context":185},{"file":265,"line":227,"context":185},{"file":265,"line":250,"context":185},{"file":265,"line":252,"context":185},{"file":265,"line":274,"context":185},62,{"file":265,"line":233,"context":185},{"file":265,"line":277,"context":185},65,{"file":265,"line":279,"context":185},68,{"file":265,"line":239,"context":185},{"file":265,"line":282,"context":185},71,{"file":284,"line":266,"context":185},"admin\\widgets\\fti-user-tweets-widget.php",{"file":284,"line":220,"context":185},{"file":284,"line":43,"context":185},{"file":284,"line":244,"context":185},{"file":284,"line":225,"context":185},{"file":284,"line":227,"context":185},{"file":284,"line":252,"context":185},{"file":284,"line":231,"context":185},{"file":284,"line":274,"context":185},{"file":284,"line":257,"context":185},{"file":295,"line":296,"context":185},"includes\\class-full-twitter-api.php",83,{"file":295,"line":298,"context":185},93,{"file":295,"line":160,"context":185},{"file":295,"line":301,"context":185},139,{"file":295,"line":303,"context":185},159,{"file":295,"line":305,"context":185},204,{"file":295,"line":307,"context":185},217,{"file":295,"line":309,"context":185},232,{"file":295,"line":311,"context":185},245,{"file":295,"line":313,"context":185},264,{"file":295,"line":315,"context":185},274,{"file":295,"line":317,"context":185},283,{"file":295,"line":319,"context":185},286,{"file":295,"line":321,"context":185},316,{"file":323,"line":279,"context":185},"public\\class-full-twitter-integration-public-views.php",{"file":323,"line":239,"context":185},{"file":323,"line":261,"context":185},{"file":323,"line":263,"context":185},{"file":323,"line":328,"context":185},73,{"file":323,"line":330,"context":185},75,{"file":323,"line":332,"context":185},80,{"file":323,"line":296,"context":185},{"file":323,"line":335,"context":185},91,{"file":323,"line":152,"context":185},{"file":323,"line":338,"context":185},111,{"file":323,"line":340,"context":185},113,{"file":323,"line":303,"context":185},{"file":323,"line":343,"context":185},162,{"file":323,"line":345,"context":185},175,[],[],{"summary":349,"deductions":350},"The 'full-twitter-integration' plugin v1.0.0 presents a mixed security posture.  On the positive side, the plugin exhibits good practices regarding SQL query handling, exclusively using prepared statements, and it has no recorded vulnerability history, suggesting a history of secure development. The attack surface appears to be minimal, with no unprotected entry points identified from the static analysis. However, several areas raise concerns. The low percentage of properly escaped output (16%) is a significant weakness, potentially leading to Cross-Site Scripting (XSS) vulnerabilities if user-supplied data is displayed without sufficient sanitization. The absence of nonce checks and a limited number of capability checks (only one) on its entry points, combined with the presence of file operations and external HTTP requests, could open avenues for various attacks, including unauthorized actions or data leakage, especially if combined with other vulnerabilities. The taint analysis reporting zero flows, while seemingly positive, could also indicate that the analysis itself was limited or that the plugin's architecture doesn't readily expose such flows, rather than a guarantee of complete security.  Overall, while the plugin avoids common pitfalls like raw SQL and unpatched CVEs, the lack of robust output escaping and insufficient input validation on its entry points are critical areas that require attention to improve its security.",[351,354,357,360,363],{"reason":352,"points":353},"Low percentage of properly escaped output",12,{"reason":355,"points":356},"No nonce checks on entry points",7,{"reason":358,"points":359},"Limited capability checks on entry points",5,{"reason":361,"points":362},"Presence of file operations",3,{"reason":364,"points":362},"Presence of external HTTP requests","2026-03-16T23:29:23.600Z",{"wat":367,"direct":376},{"assetPaths":368,"generatorPatterns":371,"scriptPaths":372,"versionParams":373},[369,370],"\u002Fwp-content\u002Fplugins\u002Ffull-twitter-integration\u002Fadmin\u002Fcss\u002Ffull-twitter-integration-admin.css","\u002Fwp-content\u002Fplugins\u002Ffull-twitter-integration\u002Fadmin\u002Fjs\u002Ffull-twitter-integration-admin.js",[],[370],[374,375],"full-twitter-integration\u002Fadmin\u002Fcss\u002Ffull-twitter-integration-admin.css?ver=","full-twitter-integration\u002Fadmin\u002Fjs\u002Ffull-twitter-integration-admin.js?ver=",{"cssClasses":377,"htmlComments":378,"htmlAttributes":379,"restEndpoints":380,"jsGlobals":381,"shortcodeOutput":383},[],[],[],[],[382],"window.full_Twitter_Integration",[384,385],"[fti-list]","[fti-slider]"]