Craft 3 multi site publish options
It sounds like this is something that could be done using a module. You could use the sites field type to select the sites you want to enable the entry for, and then listen to the beforeSave event to enable the selected sites (and disable all others).

You would listen for, and act on, this event in your module's init method.

The beforeSave event gets called for every site the entry gets saved for, so it could be something like (untested):

Event::on(Entry::class, Entry::EVENT_BEFORE_SAVE, function (ModelEvent $event) {
    // Get the entry from the event
    $entry = $event-&gt;sender;

    if (
        $entry-&gt;type-&gt;id == 1 // &lt;-- Section type ID for entry
        &amp;&amp; !in_array(
            $entry-&gt;siteId,
            $entry-&gt;getFieldValue('visibleOnSites')
        )
    ) {
        $entry-&gt;enabledForSite = false;
    }
}


This assumes that entries are enabled for every site by default, and that propagation for this section is active.