webentwicklung-frage-antwort-db.com.de

Können wir Benutzern erlauben, Titelseite aus Themenoptionen auszuwählen?

Ich weiß, dass es einfach ist, unter Einstellungen> Lesen> Startseite die Option Vordere statische Seite zu wählen. Ich suche jedoch nach einer Möglichkeit, diese Funktion in den Themenoptionen zu verwenden. Können wir das machen?

1
Ayanize

Seit WP 3.4 können Sie dazu den Theme Customizer verwenden. Soweit ich weiß, ist "Static Front Page" eine der Standardoptionen des Theme Customizers.

Eine allgemeine Einführung finden Sie auf der Seite zum Erscheinungsbild-Anpassungsbildschirm im Codex. Und dann könnten Customizer-Tutorials und Dokumentation ein nützlicher nächster Schritt sein.

enter image description here

1
tillinberlin

WordPress verwendet die Options-API, um diese Einstellungen zu speichern. Sie müssen lediglich den Namen und den Wert der Einstellung ermitteln. In Ihrem Fall ist es wie folgt:

//Option name - Value

//This corresponds to 'Front page displays'
show_on_front - posts/page

//This corresponds to the Static page: Front page name
page_on_front - <page id>

//This corresponds to the Posts page: Posts page name
page_for_posts - <page id>

Sie müssen lediglich ein Formular erstellen, in dem die Optionen korrekt angezeigt werden. Sie können das Formular auf der Seite mit den WordPress-Einstellungen überprüfen und kopieren. Die Namen müssen mit denen übereinstimmen, die ich oben angegeben habe (was der Fall ist, wenn Sie das Formular von WordPress kopieren). Wenn Sie nun das Formular abschicken, aktualisieren Sie die Einstellungen wie folgt:

//If you want the page titled 'Home', with the ID 34 to be the homepage.
update_option('show_on_front', 'page');

update_option('page_on_front', 34);

Das ist es. Hoffe das hilft.

1

AKTUALISIEREN

Ich habe das herausgefunden. Ich habe Hilfe von wp-admin/options-reading.php bekommen. Hier ist der Beispielcode. Es wird nur die Option hinzugefügt, eine Seite auszuwählen, die als Startseite für meine Designoptionen festgelegt werden soll.

add_menu_page('Menu Name', 'Menu Name', 'manage_options', 'menu-slug', 'menu_manage_options');

function menu_manage_options(){
    ?>

    <div class="wrap">
<h1><?php echo esc_html( $title ); ?></h1>

<form method="post" action="options.php">
<?php
settings_fields( 'reading' );

if ( ! in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) )
    add_settings_field( 'blog_charset', __( 'Encoding for pages and feeds' ), 'options_reading_blog_charset', 'reading', 'default', array( 'label_for' => 'blog_charset' ) );
?>

<?php if ( ! get_pages() ) : ?>
<input name="show_on_front" type="hidden" value="posts" />
<table class="form-table">
<?php
    if ( 'posts' != get_option( 'show_on_front' ) ) :
        update_option( 'show_on_front', 'posts' );
    endif;

else :
    if ( 'page' == get_option( 'show_on_front' ) && ! get_option( 'page_on_front' ) && ! get_option( 'page_for_posts' ) )
        update_option( 'show_on_front', 'posts' );
?>
<table class="form-table">
<tr>
<th scope="row"><?php _e( 'Front page displays' ); ?></th>
<td id="front-static-pages"><fieldset><legend class="screen-reader-text"><span><?php _e( 'Front page displays' ); ?></span></legend>
        <p><label>
        <input name="show_on_front" type="radio" value="page" class="tog" <?php checked( 'page', get_option( 'show_on_front' ) ); ?> />
        <?php printf( __( 'A <a href="%s">static page</a> (select below)' ), 'edit.php?post_type=page' ); ?>
    </label>
    </p>
<ul>
    <li><label for="page_on_front"><?php printf( __( 'Front page: %s' ), wp_dropdown_pages( array( 'name' => 'page_on_front', 'echo' => 0, 'show_option_none' => __( '&mdash; Select &mdash;' ), 'option_none_value' => '0', 'selected' => get_option( 'page_on_front' ) ) ) ); ?></label></li>

</ul>
<?php if ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) == get_option( 'page_on_front' ) ) : ?>
<div id="front-page-warning" class="error inline"><p><?php _e( '<strong>Warning:</strong> these pages should not be the same!' ); ?></p></div>
<?php endif; ?>
</fieldset></td>
</tr>
<?php endif; ?>


<?php do_settings_fields( 'reading', 'default' ); ?>
</table>

<?php do_settings_sections( 'reading' ); ?>

<?php submit_button(); ?>
</form>
</div>

    <?php

}
0
Ayanize