{"id":1663,"date":"2011-06-18T09:59:01","date_gmt":"2011-06-18T13:59:01","guid":{"rendered":"http:\/\/www.shinephp.com\/?p=1663"},"modified":"2011-06-21T13:13:40","modified_gmt":"2011-06-21T17:13:40","slug":"lockdown-wp-admin-plugin-review","status":"publish","type":"post","link":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/","title":{"rendered":"Lockdown WP Admin plugin review"},"content":{"rendered":"<p><div id=\"attachment_1664\" style=\"width: 232px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/wp-login.png\"><img aria-describedby=\"caption-attachment-1664\" loading=\"lazy\" src=\"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/wp-login.png\" alt=\"Lockdown WP Admin plugin review\" title=\"Lockdown WP Admin plugin review\" width=\"222\" height=\"200\" class=\"size-full wp-image-1664\" \/><\/a><p id=\"caption-attachment-1664\" class=\"wp-caption-text\">Lockdown WP Admin<\/p><\/div> <strong><br \/>\n&#8220;Lockdown WordPress Admin&#8221;<\/strong> or shortly &#8220;Lockdown WP Admin&#8221; plugin for WordPress is one of plugins concerned WordPress security enhancement. You can locate it at the WordPress <a href=\"http:\/\/wordpress.org\/extend\/plugins\/lockdown-wp-admin\/\" title=\"Lockdown WP Admin\">repository<\/a>. Plugin author is <a href=\"http:\/\/profiles.wordpress.org\/users\/sean212\/\">Sean Fisher<\/a>. Last version available for the moment of writing this review is 1.6.<br \/>\nLets go and see step by step what this plugin offers to the WordPress adminstrator to make WordPress more secure.<br \/>\n<strong>1st,<\/strong> &#8220;Lockdown WP admin&#8221; hides wp-admin directory from the un-logged-in visitor. Such visitor will get 404 page not found HTTP error in its browser if he requests http:\/\/yourblogdomain\/wp-admin\/ URL.<!--more--><br \/>\nIn order to activate this feature turn on &#8220;Yes, please hide WP Admin from the user when they aren&#8217;t logged in&#8221; checkbox via the &#8220;Lockdown WP&#8221; menu item at the &#8220;Lockdown WP&#8221; submenu of your WordPress administrator dashboard. I tested it on two WordPress installations (local and remote one hosted at the shared <a href=\"http:\/\/www.1and1.com\/?k_id=22736610\" title=\"1and1.com\" target=\"new\">1and1.com<\/a> hosting. Tests were successful in both cases. Conclusion: <span style=\"color:green\">this useful feature works.<\/span><br \/>\n<div id=\"attachment_1671\" style=\"width: 624px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-1671\" loading=\"lazy\" src=\"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/lockdownwpadmin.png\" alt=\"Lockdown WP Admin Settings\" title=\"Lockdown WP Admin Settings\" width=\"614\" height=\"653\" class=\"size-full wp-image-1671\" srcset=\"https:\/\/shinephp.com\/wp-content\/uploads\/2011\/06\/lockdownwpadmin.png 614w, https:\/\/shinephp.com\/wp-content\/uploads\/2011\/06\/lockdownwpadmin-282x300.png 282w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><p id=\"caption-attachment-1671\" class=\"wp-caption-text\">Lockdown WP Admin Settings<\/p><\/div><br \/>\nThe second way to login into WordPress beside of sending request to wp-admin folder directly is WordPress login link &#8211; wp-login.php by default. So we came to the<br \/>\n<strong>2nd,<\/strong> &#8220;Lockdown WP admin&#8221; can change your blog login link, thus it could be e.g. <code>http:\/\/yourblog\/secretloginlink\/<\/code> instead of <code>http:\/\/yourblog\/wp-login.php<\/code> by default. Tested. Conclusion: <span style=\"color:green\">This feature works also.<\/span><br \/>\nTwo useful features described above could help you protect your blog from the brute force attacks. <\/p>\n<p>\nLast feature is concerned of mechanism of HTTP authentification for users of your blog. The idea is interesting. If you turn on this feature and select &#8220;WordPress Login Credentials&#8221; option then you should not modify manually your .htaccess or .htpasswd files, etc. Due to this plugin server during realizing HTTP authentication will check user&#8217;s login and password from his WordPress user account. It&#8217;s quit good and interesting idea, as using direct .htaccess, .htpasswd technique is not possible if you have multi-users access to your admin back-end. It&#8217;s difficult to support such password database manually.<br \/>\nOther option is to use separate user name and password for HTTP authentication. You can add\/delete users to such list via &#8220;Private users&#8221; menu item at the &#8220;Lockdown WP&#8221; submenu.<br \/>\n<div id=\"attachment_1681\" style=\"width: 608px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-1681\" loading=\"lazy\" src=\"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/lockdownwp-private-users.png\" alt=\"Lockdown WP admin private users\" title=\"Lockdown WP admin private users\" width=\"598\" height=\"468\" class=\"size-full wp-image-1681\" srcset=\"https:\/\/shinephp.com\/wp-content\/uploads\/2011\/06\/lockdownwp-private-users.png 598w, https:\/\/shinephp.com\/wp-content\/uploads\/2011\/06\/lockdownwp-private-users-300x234.png 300w\" sizes=\"(max-width: 598px) 100vw, 598px\" \/><p id=\"caption-attachment-1681\" class=\"wp-caption-text\">Lockdown WP admin private users<\/p><\/div><br \/>\nIn case something goes wrong with HTPP authentification plugin has a feature to discard this option without deleting the plugin itself. You may put the empty &#8216;disable_auth.txt&#8217; file into plugin directory for that.<\/p>\n<p>\nI had problems with HTPP authentification here.  HTPP authentification feature worked at my local test installation, but it didn&#8217;t work at site located on <a href=\"http:\/\/www.1and1.com\/?k_id=22736610\" title=\"1and1.com\" target=\"new\">1and1.com<\/a> hosting. Furthermore, HTTP authentification took place not before showing WordPress login form, but just after. That is WordPress checks user name and password, tells you or intruder if user name and password valid or not and show HTPP authentification popup window just after that. That is the main purpose of using HTTP authentification &#8211; prevent blog from brute force passwod cracking attacks &#8211; is not fulfilled here. If intruder gets valid WordPress username and password via software bot then he may login with manual input of user credentials into HTPP authentification popup window.\n<\/p>\n<p><span style=\"color: blue;\">According to written above I don&#8217;t recomend you to use the HTTP authentification feature offered by &#8220;Lockdown WP admin&#8221; plugin.<\/span><\/p>\n<p>\nPHP code is accurate and well commented. It is a plus. The big minus I found reading PHP code is the spyware feature which this plugin includes.<br \/>\n<span style=\"color:red; font-weight: bold; font-size: 1.2em;\">Warning!<\/span> <span style=\"color:red;\">Once a week if user update plugin&#8217;s settings &#8220;Lockdown WP admin&#8221; plugin sends valuable information to plugin&#8217;s author site. URL is http:\/\/labs.talkingwithsean.com\/lockdown-api\/main\/send\/<\/span><br \/>\nLet&#8217;s see on the example of data which is sent to the external server:<br \/>\n[ld_admin_version] => 1.5<br \/>\n[server] => www.shinephp.my<br \/>\n[request_url] => \/wp-admin\/admin.php?page=lockdown-wp-admin<br \/>\n[wordpress_version] => 3.1.3<br \/>\n[url] => http:\/\/www.shinephp.my<br \/>\n[charset] => UTF-8<br \/>\n[login_base] => your-secret-login-directory-here<br \/>\n[ld_http_auth] => none<br \/>\n[ld_hide_wp_admin] => yep<br \/>\n[permalink_structure] => \/%postname%<br \/>\n[server_software] => Apache\/2.2.14 (Ubuntu)<br \/>\n[query_string] => page=lockdown-wp-admin<br \/>\n[wp_version] => 3.1.3\n<\/p>\n<p>I&#8217;m sure if plugin author needs such information he should give to the user the choice, ask his permission for sending these data. I don&#8217;t see that &#8216;Lockdown WP admin&#8217; works a such way. So if you plan to use this useful in general plugin and don&#8217;t wish to send your data to the external server, you should comment the line #505, 506, 507 at the &#8216;lock-down-wp-admin.php&#8217; file. Look at the code fragment below for your reference:<\/p>\n<pre lang=\"php\" line=\"504\">\r\n \/\/ The stats\r\n\t$check_stats_sent = get_transient('ld_send_stats');\r\n\tif ( !$check_stats_sent )\r\n\t  $this->send_stats();\r\n<\/pre>\n<p>Method which send your data to the plugin&#8217;s author is:<\/p>\n<pre lang=\"php\">\r\n        \/**\r\n\t * Send stats\r\n\t *\r\n\t * Send anyomous stats to help out the development of the plugin.\r\n\t * This should be pretty temporary.\r\n\t * @access private\r\n\t**\/\r\n\tpublic function send_stats()\r\n\t{\r\n\t\tglobal $wp_version;\r\n\t\t\r\n\t\t$to_post = array(\r\n\t\t\t'ld_admin_version'\t=>\t$this->ld_admin_version,\r\n\t\t\t'server'\t\t\t=>\t$_SERVER['HTTP_HOST'],\r\n\t\t\t'request_url'\t\t=>\t$_SERVER['REQUEST_URI'],\r\n\t\t\t'wordpress_version'\t=>\t$wp_version,\r\n\t\t\t'url'\t\t\t\t=>\tget_bloginfo( 'url' ),\r\n\t\t\t\/\/\tI reconsidered this..\r\n\t\t\t\/\/\t'admin_email'\t\t=>\tget_bloginfo('admin_email'),\r\n\t\t\t'charset'\t\t\t=>\tget_bloginfo('charset'),\r\n\t\t\t'login_base'\t\t=>\t$this->login_base,\r\n\t\t\t'ld_http_auth'\t\t=>\tget_option('ld_http_auth'),\r\n\t\t\t'ld_hide_wp_admin'\t=>\tget_option('ld_hide_wp_admin'),\r\n\t\t\t'permalink_structure'\t=>\tget_option('permalink_structure'),\r\n\t\t\t'server_software'\t\t=> $_SERVER['SERVER_SOFTWARE'],\r\n\t\t\t'query_string'\t\t\t=> $_SERVER['QUERY_STRING'],\r\n\t\t\t'wp_version'\t\t\t=>\t$wp_version,\r\n\t\t);\r\n\t\t    \r\n\t\tif ( function_exists('got_mod_rewrite '))\r\n\t\t\t$to_post['got_mod_rewrite '] = got_mod_rewrite();\r\n\t\t\r\n\t\t$options = array(\r\n\t\t\t'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3),\r\n\t\t\t'body' => array( 'data' => serialize( $to_post ) ),\r\n\t\t\t'user-agent' => 'WordPress\/' . $wp_version . '; ' . get_bloginfo( 'url' )\r\n\t\t);\r\n\r\n\t\t$raw_response = wp_remote_post('http:\/\/labs.talkingwithsean.com\/lockdown-api\/main\/send\/', $options);\r\n\t\t\r\n\t\t\/\/\tSet that we sent it\r\n\t\tset_transient('ld_send_stats', 'true', 604800);\r\n\t\t\r\n\t\t\/\/\tWhat'd they respond?\r\n\t\tif ( is_wp_error( $raw_response ) )\r\n\t\t\treturn FALSE;\r\n\t\r\n\t\tif ( 200 != $raw_response['response']['code'] )\r\n\t\t\treturn FALSE;\r\n\t\r\n\t\t$response = json_decode( unserialize( $raw_response['body'] ) );\r\n\t\t\r\n\t\tif ( !is_array( $response ) )\r\n\t\t\treturn FALSE;\r\n\t\t\t\r\n\t}\r\n}\r\n<\/pre>\n<p>As we can see from the comments to the method above it is included to plugin temporarily. But there is nothing more permanent than something temporary. In any case plugin user should know if his data is sent anywhere.<\/p>\n<p style=\"color: green;\">Text above is about version 1.6. After 3 days only after this post publication Sean Fisher published version 1.7 which is free from sending data to the external site functionality. I compared 1.6 and 1.7 versions with diff tool and confirm that <code>send_stats()<\/code> method was removed from the code. Thanks to Sean for so fast release of the updated code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Lockdown WordPress Admin&#8221;<\/strong> or shortly &#8220;Lockdown WP Admin&#8221; plugin for WordPress is one of plugins concerned WordPress security enhancement. You can locate it at the WordPress <a href=\"http:\/\/wordpress.org\/extend\/plugins\/lockdown-wp-admin\/\" title=\"Lockdown WP Admin\">repository<\/a>. Plugin author is <a href=\"http:\/\/profiles.wordpress.org\/users\/sean212\/\">Sean Fisher<\/a>. Last version available for the moment of writing this review is 1.6.<br \/>\nLets go and see step by step what this plugin offers to the WordPress adminstrator to make WordPress more secure.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[8,4],"tags":[5,522,520,24],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Lockdown WP Admin plugin review<\/title>\n<meta name=\"description\" content=\"&quot;Lockdown WP admin&quot; hides wp-admin directory from the un-logged-in visitor. Such visitor will get 404 page not found HTTP error in its browser if he requests http:\/\/yourblogdomain\/wp-admin\/ URL.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lockdown WP Admin plugin review\" \/>\n<meta property=\"og:description\" content=\"&quot;Lockdown WP admin&quot; hides wp-admin directory from the un-logged-in visitor. Such visitor will get 404 page not found HTTP error in its browser if he requests http:\/\/yourblogdomain\/wp-admin\/ URL.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/\" \/>\n<meta property=\"og:site_name\" content=\"ShinePHP.com\" \/>\n<meta property=\"article:published_time\" content=\"2011-06-18T13:59:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-06-21T17:13:40+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/wp-login.png\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vladimir\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/shinephp.com\/#website\",\"url\":\"https:\/\/shinephp.com\/\",\"name\":\"ShinePHP.com\",\"description\":\"WordPress, PHP, MySQL, general WEB development hints, reviews, plugins, news...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/shinephp.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#primaryimage\",\"url\":\"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/wp-login.png\",\"contentUrl\":\"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/wp-login.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#webpage\",\"url\":\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/\",\"name\":\"Lockdown WP Admin plugin review\",\"isPartOf\":{\"@id\":\"https:\/\/shinephp.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#primaryimage\"},\"datePublished\":\"2011-06-18T13:59:01+00:00\",\"dateModified\":\"2011-06-21T17:13:40+00:00\",\"author\":{\"@id\":\"https:\/\/shinephp.com\/#\/schema\/person\/35234172d05c494eaf13ebe64e4d9ad2\"},\"description\":\"\\\"Lockdown WP admin\\\" hides wp-admin directory from the un-logged-in visitor. Such visitor will get 404 page not found HTTP error in its browser if he requests http:\/\/yourblogdomain\/wp-admin\/ URL.\",\"breadcrumb\":{\"@id\":\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Lockdown WP Admin plugin review\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/shinephp.com\/#\/schema\/person\/35234172d05c494eaf13ebe64e4d9ad2\",\"name\":\"Vladimir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/shinephp.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6a772ebad75c913df71a01b9f2d0725a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6a772ebad75c913df71a01b9f2d0725a?s=96&d=mm&r=g\",\"caption\":\"Vladimir\"},\"sameAs\":[\"http:\/\/www.shinephp.com\"],\"url\":\"https:\/\/shinephp.com\/author\/garvs\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Lockdown WP Admin plugin review","description":"\"Lockdown WP admin\" hides wp-admin directory from the un-logged-in visitor. Such visitor will get 404 page not found HTTP error in its browser if he requests http:\/\/yourblogdomain\/wp-admin\/ URL.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/","og_locale":"en_US","og_type":"article","og_title":"Lockdown WP Admin plugin review","og_description":"\"Lockdown WP admin\" hides wp-admin directory from the un-logged-in visitor. Such visitor will get 404 page not found HTTP error in its browser if he requests http:\/\/yourblogdomain\/wp-admin\/ URL.","og_url":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/","og_site_name":"ShinePHP.com","article_published_time":"2011-06-18T13:59:01+00:00","article_modified_time":"2011-06-21T17:13:40+00:00","og_image":[{"url":"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/wp-login.png"}],"twitter_misc":{"Written by":"Vladimir","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/shinephp.com\/#website","url":"https:\/\/shinephp.com\/","name":"ShinePHP.com","description":"WordPress, PHP, MySQL, general WEB development hints, reviews, plugins, news...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/shinephp.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#primaryimage","url":"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/wp-login.png","contentUrl":"http:\/\/www.shinephp.com\/wp-content\/uploads\/2011\/06\/wp-login.png"},{"@type":"WebPage","@id":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#webpage","url":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/","name":"Lockdown WP Admin plugin review","isPartOf":{"@id":"https:\/\/shinephp.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#primaryimage"},"datePublished":"2011-06-18T13:59:01+00:00","dateModified":"2011-06-21T17:13:40+00:00","author":{"@id":"https:\/\/shinephp.com\/#\/schema\/person\/35234172d05c494eaf13ebe64e4d9ad2"},"description":"\"Lockdown WP admin\" hides wp-admin directory from the un-logged-in visitor. Such visitor will get 404 page not found HTTP error in its browser if he requests http:\/\/yourblogdomain\/wp-admin\/ URL.","breadcrumb":{"@id":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/shinephp.com\/lockdown-wp-admin-plugin-review\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Lockdown WP Admin plugin review"}]},{"@type":"Person","@id":"https:\/\/shinephp.com\/#\/schema\/person\/35234172d05c494eaf13ebe64e4d9ad2","name":"Vladimir","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/shinephp.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6a772ebad75c913df71a01b9f2d0725a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6a772ebad75c913df71a01b9f2d0725a?s=96&d=mm&r=g","caption":"Vladimir"},"sameAs":["http:\/\/www.shinephp.com"],"url":"https:\/\/shinephp.com\/author\/garvs\/"}]}},"_links":{"self":[{"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/posts\/1663"}],"collection":[{"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/comments?post=1663"}],"version-history":[{"count":0,"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/posts\/1663\/revisions"}],"wp:attachment":[{"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/media?parent=1663"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/categories?post=1663"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shinephp.com\/wp-json\/wp\/v2\/tags?post=1663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}