The parent theme's functions.php runs **after** the child theme's, so in order to remove an action defined by the parent theme the `remove_action` call must be delayed using a hook after the parent theme registers the action. So putting the `remove_action` call purely inside the child's functions.php won't work. It must be attached to a hook. However from the code excerpt in the question it is not clear if the parent's `add_action( 'tha_content_while_before', 'fwp_archive_header' );` line is just in functions.php or is that inside an action? If it is inside an action, hook the `remove_action` call to the same action but with bigger priority (so it runs after). Another rule of thumb attempt is to hook your remove call to `wp_loaded`. Should be still on time to affect how pages are rendered, but would likely be late enough to override most common theme hooks. On the other hand declaring an empty function with the name `fwp_archive_header` is almost as good solution. Note though it is not “redeclare”, as there's no such thing in PHP. It's more like declare before the parent theme, so the parent theme won't declare it's own function with the same name (with appropriate checks in place).