For example, if you have
mu0 = pm.Normal('mu0', 0, 10.)
sd0 = pm.HalfNormal('sd0', 10.)
beta = pm.Normal('beta', mu0, sd0, shape=n_predictor)
...
obs = pm.Normal('y', X.dot(beta), sd, observed=y)
you just need the joint posterior of beta and sd to get your posterior predictive distribution, as it effectively marginalised over mu0 and sd0