{"id":276895,"date":"2026-01-27T14:04:28","date_gmt":"2026-01-27T14:04:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-protected-downloads\/"},"modified":"2026-02-27T17:35:26","modified_gmt":"2026-02-27T17:35:26","slug":"downloads-for-logged-in-users","status":"publish","type":"plugin","link":"https:\/\/br.wordpress.org\/plugins\/downloads-for-logged-in-users\/","author":3949904,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.7.20260227","stable_tag":"0.7.20260227","tested":"6.9.4","requires":"6.7","requires_php":"7.4","requires_plugins":null,"header_name":"Downloads for logged in users","header_author":"Damien Carbery","header_description":"Limit access to specified media files to logged in users. Very simple interface with no unnecessary features.","assets_banners_color":"355c69","last_updated":"2026-02-27 17:35:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.damiencarbery.com\/downloads-for-logged-in-users\/","header_author_uri":"https:\/\/www.damiencarbery.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":272,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"0.5.20260127":{"tag":"0.5.20260127","author":"daymobrew","date":"2026-01-27 17:55:39"},"0.6.20260128":{"tag":"0.6.20260128","author":"daymobrew","date":"2026-01-29 09:53:10"},"0.7.20260227":{"tag":"0.7.20260227","author":"daymobrew","date":"2026-02-27 17:35:26"}},"upgrade_notice":{"":"<p>None yet.<\/p>"},"ratings":[],"assets_icons":{"icon-256-256.png":{"filename":"icon-256-256.png","revision":3448063,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3448063,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.20260127","0.6.20260128","0.7.20260227"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3448063,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3448063,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3448063,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3448063,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"The Downloads admin page allows you click to copy the custom download url.","2":"Edit a download to change the uploaded file and\/or the download title.","3":"Create a new download.","4":"A JavaScript alert is shown when the user is not logged in."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[568,4721,5440],"plugin_category":[],"plugin_contributors":[254770],"plugin_business_model":[],"class_list":["post-276895","plugin","type-plugin","status-publish","hentry","plugin_tags-download","plugin_tags-download-manager","plugin_tags-downloads","plugin_contributors-daymobrew","plugin_committers-daymobrew"],"banners":{"banner":"https:\/\/ps.w.org\/downloads-for-logged-in-users\/assets\/banner-772x250.png?rev=3448063","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/downloads-for-logged-in-users\/assets\/icon-256-256.png?rev=3448063","icon_2x":"https:\/\/ps.w.org\/downloads-for-logged-in-users\/assets\/icon-256-256.png?rev=3448063","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/downloads-for-logged-in-users\/assets\/screenshot-1.png?rev=3448063","caption":"The Downloads admin page allows you click to copy the custom download url."},{"src":"https:\/\/ps.w.org\/downloads-for-logged-in-users\/assets\/screenshot-2.png?rev=3448063","caption":"Edit a download to change the uploaded file and\/or the download title."},{"src":"https:\/\/ps.w.org\/downloads-for-logged-in-users\/assets\/screenshot-3.png?rev=3448063","caption":"Create a new download."},{"src":"https:\/\/ps.w.org\/downloads-for-logged-in-users\/assets\/screenshot-4.png?rev=3448063","caption":"A JavaScript alert is shown when the user is not logged in."}],"raw_content":"<!--section=description-->\n<p>Limit access to specified media files to logged in users. Very simple interface with no unnecessary features.<\/p>\n\n<p>Create a new 'Download' post, give it a title and upload a file for it. Files are stored in a protected directory under wp-content\/uploads. This prevents anyone from accessing a file, even if they have the url.<\/p>\n\n<p>Access is via a custom download url that can be copied from the plugin's admin screen.<\/p>\n\n<p>Downloads can be assigned categories though these are for site admin organisation use and are not used in the custom url.<\/p>\n\n<p>The download url is not the url of the file; it is a custom url with the post ID. This allows you update the downloadable file without having to change the download url.<\/p>\n\n<p>The plugin is enabled for translation.<\/p>\n\n<p>If you find a bug, have a feature request or want to translate the plugin, please create an issue via the plugin's <a href=\"https:\/\/github.com\/damiencarbery\/downloads-for-logged-in-users\/issues\">GitHub repository<\/a>.<\/p>\n\n<p>You can also <a href=\"https:\/\/www.damiencarbery.com\/contact\/\">contact me on my website<\/a>.<\/p>\n\n<h3>ToDo<\/h3>\n\n<ul>\n<li>Change list view Download link to a link (to allow right click Copy Link) though block left click with JavaScript.<\/li>\n<\/ul>\n\n<h3>Developer information<\/h3>\n\n<p>The access can be changed with the '<em>liudownload_check_perms<\/em>' filter, returning true to allow the download.\nFor example:<\/p>\n\n<pre><code>&lt;?php\n\/\/ If the download ID is 1 then allow the download.\nadd_filter( 'liudownload_check_perms', 'my_download_perms_check', 10, 2 );\nfunction my_download_perms_check( $user_logged_in, $download_id ) {\n    if ( 1 == $download_id ) { return true; }\n\n    return $user_logged_in;\n}\n<\/code><\/pre>\n\n<p>After a file has been downloaded the '<em>liudownload_after_download<\/em>' action runs. This could allow tracking of downloads.\nFor example:<\/p>\n\n<pre><code>&lt;?php\nadd_action( 'liudownload_after_download', 'note_downloads' );\nfunction note_downloads( $download_id ) {\n    $download_count = get_post_meta( $download_id, 'dl_count', true );\n    if ( $download_count ) {\n        $download_count++;\n    } else {\n        $download_count = 1;\n    }\n    update_post_meta( $download_id, 'dl_count', $download_count );\n}\n<\/code><\/pre>\n\n<!--section=faq-->\n<p>None yet.<\/p>\n\n<!--section=changelog-->\n<h4>0.7.20260227<\/h4>\n\n<ul>\n<li>Allow Download posts to be used in block edit links (making them available in link search).<\/li>\n<li>Redirect the Download post's permalink (returned by link search) to the download link (that checks permissions).<\/li>\n<li>Enable 'View' quick link on Downloads list view so the permalink can be selected another way.<\/li>\n<\/ul>\n\n<h4>0.6.20260128<\/h4>\n\n<ul>\n<li>JS alert was showing at every page load - the add_action() was in the wrong place.<\/li>\n<\/ul>\n\n<h4>0.5.20260127<\/h4>\n\n<ul>\n<li>Change upload dir to uploads\/downloads-for-logged-in-users.<\/li>\n<\/ul>\n\n<h4>0.4.20260126<\/h4>\n\n<ul>\n<li>Rename files, text domain to use new slug, 'downloads-for-logged-in-users', as requested during WordPress Plugin review.<\/li>\n<\/ul>\n\n<h4>0.3.20260125<\/h4>\n\n<ul>\n<li>Change plugin name to \"Downloads for logged in users\" as requested during WordPress Plugin review.<\/li>\n<\/ul>\n\n<h4>0.2.20260118<\/h4>\n\n<ul>\n<li>Move CSS and JS into separate files and load with wp_enqueue_script\/style.<\/li>\n<\/ul>\n\n<h4>0.1.20260118<\/h4>\n\n<ul>\n<li>Initial version.<\/li>\n<\/ul>","raw_excerpt":"Limit access to specified media files to logged in users. Very simple interface with no unnecessary features.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/276895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=276895"}],"author":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/daymobrew"}],"wp:attachment":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=276895"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=276895"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=276895"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=276895"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=276895"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=276895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}