How to unregister "httpd" after "wfsctl stop"?
As noted in the question, sudo wfsctl stop does not stop and unregister the httpd process. However, the httpd daemons are stopped and restarted. Also, httpd remains registered to start on the next (re)boot.

sudo wfsctl diagnose
# All httpd processes:
# COMM   RUSER   PPID   PID STARTED
# httpd  root       1   325  8:46PM
# httpd  _www     325   331  8:46PM
sudo wfsctl stop
sudo wfsctl diagnose
# All httpd processes:
# COMM    RUSER  PPID   PID STARTED
# httpd   root      1   399 10:19PM
# httpd   _www    399   403 10:19PM


The man wfsctl mentions that the use of httpd-wrapper is preferred to the use of apachectl and httpd (at least for the -t test flag.)


  The Apache config file for WebDAV File Sharing is parameterized, and the httpd server is managed by the httpd-wrapper utility, which passes parameters to httpd. This is normally transparent, but note that to check the Apache config file syntax, do not use apachectl configtest or httpd -t. Instead, use httpd-wrapper -t.


In general, the options shown in the man httpd page can be passed to the /usr/sbin/httpd-wrapper ruby script. Most of the options work as expected.

However, sudo httpd-wrapper -k graceful-stop behaves like a reset which restarts the httpd daemons and leaves httpd registered to start when the system boots again.

Finally, sudo apachectl graceful-stop was found to stop and unregister the httpd processes.

So, the following command sequence will stop both the wfsctl WebDAV sharing and the httpd daemons on the current High Sierra.

sudo wfsctl stop
# Unloaded and removed: org.apache.httpd.webdavfilesharing.username-275.49176.plist
sudo apachectl graceful-stop
# verify
sudo wfsctl diagnose




See "How to set up wfsctl WebDAV to use with an application that uses basic authentication?" for a more complete WebDAV example.