{"id":328331,"date":"2026-07-03T13:22:29","date_gmt":"2026-07-03T13:22:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hamethread\/"},"modified":"2026-07-03T13:22:03","modified_gmt":"2026-07-03T13:22:03","slug":"hamethread","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/hamethread\/","author":15121528,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.3","stable_tag":"2.1.3","tested":"7.0","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"HameThread","header_author":"Hametuha INC.","header_description":"Forum plugin by Hametuha.","assets_banners_color":"735452","last_updated":"2026-07-03 13:22:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/extend\/plugins\/hamethread","header_author_uri":"https:\/\/hametuha.co.jp","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.3":{"tag":"2.1.3","author":"hametuha","date":"2026-07-03 13:22:03"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3595290,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3595290,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3595290,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"hamethread\/thread-button":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"hamethread\/thread-button","version":"1.0.0","title":"Thread Button","category":"widgets","icon":"format-chat","description":"Display a button that lets users start a new thread or support topic.","keywords":["thread","forum","support","hamethread"],"textdomain":"hamethread","attributes":{"label":{"type":"string","default":""},"parent":{"type":"number","default":0}},"supports":{"html":false},"editorScript":"file:.\/index.js","render":"file:.\/render.php"}},"tagged_versions":["2.1.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1643,5706,1104,11366,286],"plugin_category":[44,45],"plugin_contributors":[146156,83237],"plugin_business_model":[],"class_list":["post-328331","plugin","type-plugin","status-publish","hentry","plugin_tags-faq","plugin_tags-forum","plugin_tags-support","plugin_tags-thread","plugin_tags-woocommerce","plugin_category-discussion-and-community","plugin_category-ecommerce","plugin_contributors-hametuha","plugin_contributors-takahashi_fumiki","plugin_committers-hametuha"],"banners":{"banner":"https:\/\/ps.w.org\/hamethread\/assets\/banner-772x250.jpg?rev=3595290","banner_2x":"https:\/\/ps.w.org\/hamethread\/assets\/banner-1544x500.jpg?rev=3595290","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/hamethread\/assets\/icon.svg?rev=3595290","icon":"https:\/\/ps.w.org\/hamethread\/assets\/icon.svg?rev=3595290","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>HameThread turns WordPress into a thread-based <strong>Q&amp;A forum \/ support desk<\/strong> without a heavyweight setup. Each topic is a <code>thread<\/code> post and replies are ordinary WordPress comments, so everything you already know about moderation, roles and the REST API keeps working.<\/p>\n\n<p>It shines where a generic forum does not:<\/p>\n\n<ul>\n<li><strong>WooCommerce product support<\/strong> \u2014 show a \"Get support\" button on a product and collect purchaser questions as threads, right inside <em>My Account<\/em>.<\/li>\n<li><strong>Private threads<\/strong> \u2014 let users open threads only the author, invited people and editors can read. Perfect for paid or sensitive support.<\/li>\n<li><strong>Best answer<\/strong> \u2014 mark the reply that resolved the question and flag the whole thread as <em>Resolved<\/em>.<\/li>\n<li><strong>Block-first<\/strong> \u2014 drop the <strong>Thread Button<\/strong> block on any page to let visitors start a thread. No template editing, no code.<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><code>thread<\/code> post type with a <code>topic<\/code> taxonomy<\/li>\n<li>Comment-based replies with AJAX\/REST posting (no full page reload)<\/li>\n<li>Best answer &amp; resolved \/ unresolved status<\/li>\n<li>Private threads with capability checks<\/li>\n<li>Auto-close threads after a period of inactivity<\/li>\n<li>Upvotes on comments<\/li>\n<li>E-mail notifications to thread subscribers<\/li>\n<li>JSON-LD (<code>QAPage<\/code>) structured data for SEO<\/li>\n<li>WooCommerce <em>My Account<\/em> support page and per-product support button<\/li>\n<li>Optionally enable comment threads on any public post type<\/li>\n<li>Admin settings under <strong>Settings \u2192 Discussion<\/strong> (no code required for common tweaks)<\/li>\n<\/ul>\n\n<h4>Customization<\/h4>\n\n<p>Common settings are available under <strong>Settings \u2192 Discussion<\/strong>:<\/p>\n\n<ul>\n<li>Thread description<\/li>\n<li>Allow users to start private threads<\/li>\n<li>Post types that get HameThread-style comment threads<\/li>\n<\/ul>\n\n<p>Everything else is filterable. See <strong>For developers<\/strong> below.<\/p>\n\n<h3>For developers<\/h3>\n\n<p>Replies are standard WordPress comments and threads are a standard post type, so core hooks apply. On top of that, HameThread exposes many filters\/actions. The most useful ones:<\/p>\n\n\n\n\n  Hook\n  Type\n  Purpose\n\n\n\n\n  <code>hamethread_before_thread_form<\/code> \/ <code>hamethread_after_thread_form<\/code>\n  action\n  Add markup\/fields to the thread form\n\n\n  <code>hamethread_new_thread_post_params<\/code>\n  filter\n  Register extra REST parameters for new threads\n\n\n  <code>hamethread_new_thread_post_arg<\/code>\n  filter\n  Modify the post array before a thread is inserted\n\n\n  <code>hamethread_new_thread_validation<\/code>\n  filter\n  Add validation errors (<code>WP_Error<\/code>)\n\n\n  <code>hamethread_new_thread_inserted<\/code>\n  action\n  React after a thread is created\n\n\n  <code>hamethread_before_comment_form<\/code> \/ <code>hamethread_after_comment_form<\/code>\n  action\n  Add markup\/fields to the comment form\n\n\n  <code>hamethread_new_comment_params<\/code>\n  filter\n  Modify comment data before insert\n\n\n  <code>hamethread_default_subscribers<\/code> \/ <code>hamethread_subscribers<\/code>\n  filter\n  Control who is notified\n\n\n  <code>hamethread_user_can_start_private_thread<\/code>\n  filter\n  Allow private threads\n\n\n  <code>hamethread_user_can_comment<\/code> \/ <code>hamethread_user_can_post<\/code>\n  filter\n  Capability checks\n\n\n  <code>hamethread_dynamic_comment_post_types<\/code>\n  filter\n  Post types that get comment threads\n\n\n  <code>hamethread_post_setting<\/code> \/ <code>hamethread_post_type<\/code> \/ <code>hamethread_taxonomy<\/code>\n  filter\n  Customize the post type &amp; taxonomy\n\n\n  <code>hamethread_template<\/code>\n  filter\n  Override template parts\n\n\n\n\n<p><strong>Example \u2014 add a field to the thread form and store it:<\/strong><\/p>\n\n<pre>\/\/ 1. Render the field.\nadd_action( 'hamethread_after_thread_form', function ( $args, $default ) {\n    if ( $args['post'] ) {\n        return; \/\/ Only on new threads.\n    }\n    echo ' Notify staff';\n}, 10, 2 );\n\n\/\/ 2. Register the REST parameter.\nadd_filter( 'hamethread_new_thread_post_params', function ( $params ) {\n    $params['notify_staff'] = [ 'type' =&gt; 'integer', 'default' =&gt; 0 ];\n    return $params;\n} );\n\n\/\/ 3. React after the thread is created.\nadd_action( 'hamethread_new_thread_inserted', function ( $post_id, $request ) {\n    if ( $request-&gt;get_param( 'notify_staff' ) ) {\n        \/\/ notify\u2026\n    }\n}, 10, 2 );<\/pre>\n\n<p><strong>Example \u2014 enable comment threads on the <code>post<\/code> post type:<\/strong><\/p>\n\n<pre>add_filter( 'hamethread_dynamic_comment_post_types', function ( $post_types ) {\n    $post_types[] = 'post';\n    return $post_types;\n} );<\/pre>\n\n<p>A full list of hooks lives in the source. See the <code>app\/<\/code> directory and <a href=\"https:\/\/github.com\/hametuha\/hamethread\">the GitHub repository<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>wp-content\/plugins\/hamethread<\/code> (or install from the Plugins screen) and activate it.<\/li>\n<li>Visit <strong>Settings \u2192 Discussion<\/strong> to choose the post types and options you need.<\/li>\n<li>Add the <strong>Thread Button<\/strong> block to any page or post to let visitors start a thread, or call <code>hamethread_button()<\/code> from a template.<\/li>\n<li>Threads are listed at the <code>thread<\/code> archive (e.g. <code>\/thread\/<\/code>).<\/li>\n<\/ol>\n\n<p>WooCommerce is optional. When it is active, a <strong>Support<\/strong> tab is added to <em>My Account<\/em> and a support button can be shown on product pages.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20let%20visitors%20start%20a%20thread%3F\"><h3>How do I let visitors start a thread?<\/h3><\/dt>\n<dd><p>Add the <strong>Thread Button<\/strong> block to a page, or call <code>hamethread_button( $parent_id, $label )<\/code> in a template. The button opens a thread form powered by the REST API.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20on%20posts%20or%20custom%20post%20types%2C%20not%20just%20threads%3F\"><h3>Can I use it on posts or custom post types, not just threads?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings \u2192 Discussion \u2192 Thread Comments<\/strong> and tick the post types you want, or use the <code>hamethread_dynamic_comment_post_types<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20it%20require%20woocommerce%3F\"><h3>Does it require WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce integration is enabled automatically only when WooCommerce is active; otherwise the plugin works as a standalone forum.<\/p><\/dd>\n<dt id=\"how%20do%20i%20customize%20the%20form%2C%20validation%20or%20notifications%3F\"><h3>How do I customize the form, validation or notifications?<\/h3><\/dt>\n<dd><p>HameThread exposes a large set of filters and actions. See <strong>For developers<\/strong>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p><a href=\"https:\/\/github.com\/hametuha\/hamethread\/actions\/workflows\/test.yml\"><\/a><\/p>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Add the <strong>Thread Button<\/strong> block for the block editor.<\/li>\n<li>Add a settings screen (<strong>Settings \u2192 Discussion<\/strong>) for thread description, private threads and comment-enabled post types.<\/li>\n<li>Improve escaping, i18n and coding standards for WordPress.org Plugin Check compliance.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Removed dependencies on Twitter Bootstrap and FontAwesome.<\/li>\n<li>Modernize JavaScripts.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Bump minimum PHP version to 7.4.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add structured data.<\/li>\n<li>Add best answer feature.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>\n\n\n\n<p>See our all changelog on <a href=\"https:\/\/github.com\/hametuha\/hamethread\/releases\">GitHub Releases<\/a>.<\/p>","raw_excerpt":"Lightweight Q&amp;A forum and support desk for WordPress: threads, best answers, private threads, and per-product support for WooCommerce.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/328331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=328331"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hametuha"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=328331"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=328331"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=328331"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=328331"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=328331"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=328331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}