Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Hello wordpress gurus!

I want to be able to set the frontpage via a custom field.

So for example, in the new page area in the wordpress admin there is a custom field that displays "Set as frontage", instead of the user going to the Settings > Reading settings and setting the front page there they can do it via the new page.

I'm familiar with metaboxes and some coding but i'm not sure how i could implement this.

I also found this article on setting the front page programatically:

http://kuttler.eu/code/set-static-front-page-and-blog-page-programmatically-in-wordpress/

Its just the matter of putting it together with the custom field.

Help appreciated. Thanks

share|improve this question

2 Answers 2

up vote 1 down vote accepted

You can do it by updating 2 options.

<?php
    //This could be page or posts.
    update_option('show_on_front', '<posts/page>');

    //This one sets the page you want on front, won't work if the above option is set to 'posts'.
    update_option('page_on_front', '<id of the page you want to set as front page>');
?>

Though I cannot guarantee if this is safe and whether it will override the settings saved from the backend!

share|improve this answer

First things first - the front page is a system wide setting (by definition). Using a post meta is not the right choice. That said, you can use metaboxes to update the options itself. What you may want to do is to display a meta box that displays the current front page and also allows the user to set the current page as the front page from your metabox.

Have a look at options-reading.php to see what keys are used for front page and blog page.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.