I think you’re only adding the custom posts to the nav menu on the front-end and not on the back-end/wp-admin.
Therefore, you can use is_admin()
to see if the hook wp_get_nav_menu_items
is being called on the front-end or from an “admin” page such as the Appearance → Menus page.
So, replace this:
function services_menu_filter( $items, $menu, $args ) {
/* alter the URL for cpt-archive objects */
..with this one:
function services_menu_filter( $items, $menu, $args ) {
if ( is_admin() ) {
return $items;
}
/* alter the URL for cpt-archive objects */
Alternatively, replace this:
add_filter( 'wp_get_nav_menu_items', 'services_menu_filter', 12, 3 );
..with this one:
if ( ! is_admin() ) {
add_filter( 'wp_get_nav_menu_items', 'services_menu_filter', 12, 3 );
}