Manipulation von show_on_front, page_on_front, page_for_posts und Template-Hierarchie

Ich muss die Optionen show_on_front, page_on_front, page_for_posts aus bestimmten Gründen überschreiben. Ich setze show_on_front auf “page” und die andere auf zwei verschiedene Seiten-ID. Wenn ich diese Einstellungen im Bereich “Administration> Einstellungen> Lesen” auf dieselben Werte wie programmatisch ändere, lädt die Startseite die Vorlage “front-Page.php”. Ansonsten lädt die Startseite die page.php Vorlage. Was mache ich falsch?

add_filter('pre_option_show_on_front', 'static_front_page'); function static_front_page() { return 'page'; } add_filter('pre_option_page_on_front', 'page_on_front'); function page_on_front() { return 123; } add_filter('pre_option_page_for_posts', 'page_for_posts'); function page_for_posts() { return 123; } 

Ich weiß, das ist keine Best Practice, aber ich würde es gerne so machen.

Ein weiteres Problem bei der Einstellung pro Filter ist, dass is_front_page () danach nicht richtig funktioniert.

Solutions Collecting From Web of "Manipulation von show_on_front, page_on_front, page_for_posts und Template-Hierarchie"

Ok, habe es funktioniert. Ich habe eine Eigenschaft einer serialisierten Option innerhalb der Callbacks für die Filter zurückgegeben:

 add_filter('pre_option_page_on_front', 'page_on_front'); function page_on_front() { $options = get_option('theme_options'); return $options['page_on_front']; } add_filter('pre_option_page_for_posts', 'page_for_posts'); function page_for_posts() { $options = get_option('theme_options'); return $options['page_for_posts']; } 

Die returend-Werte waren Zahlen, aber Strings. Typecasting sie zu int hat es funktioniert.