Wählen Sie auf der Seite Einstellungen für benutzerdefinierten Beitragstyp die Seite aus, auf der das Archiv angezeigt werden soll


12

Daher habe ich die akzeptierte Antwort dieses Beitrags befolgt. Es ist möglich, eine weitere Einstellung zur Einstellung "Anzeige der Startseite" für den benutzerdefinierten Beitragstyp hinzuzufügen

Hat aber nicht ganz geklappt, musste sich mit der akzeptierten Antwort in diesem Beitrag messen.

Do_settings_sections können nicht ausgegeben werden. Kann nicht verstehen warum

Jetzt funktioniert es tatsächlich mit dem folgenden Code

//Add settings to menu
add_action( 'admin_menu', 'events_options_add_page' );
function events_options_add_page() {
//  add_submenu_page('edit.php?post_type=events', 'Events Admin', 'Events Settings', 'edit_posts', basename(__FILE__), 'events_options_do_page');
    add_submenu_page('edit.php?post_type=events', 'Events Admin', 'Events Settings', 'edit_posts', basename(__FILE__), 'events_options_do_page');
}
///wordpress/32689/possible-to-add-another-setting-to-front-page-displays-setting-for-custom-post


//Fix Cap to allow editors to edit theme options
function events_get_options_page_cap() {
    return 'edit_posts';    
}
add_filter('option_page_capability_events-options', 'events_get_options_page_cap' );


function events_options_do_page() {
?>
    <div class="wrap">
        <?php screen_icon(); ?>
        <h2><?php _e( 'Events Options', 'FoundationPress' ); ?></h2>
        <form action="options.php" method="post">
            <?php
            settings_fields( "events_settings_options" );
            do_settings_sections( "edit_posts" );
            ?>
            <?php submit_button( __( "Save changes", "FoundationPress" ), "primary", "submit", true ); ?>
        </form>
    </div>
    <?php
}

//Register Settings
add_action( 'admin_init', 'events_settings_register' );

function events_settings_register() {
    register_setting( "events_settings_options", "events_settings_options", "events_settings_validate" ); //Register main settings
//  add_settings_section( "events_cpt_settings", __( "Events Page Settings", "FoundationPress" ), "events_settings_dummy", "edit_posts"  ); //Make settings text section
//  add_settings_field( "events_settings_cpt_page", __( "Page for events", "FoundationPress" ), "events_settings_page_select", "edit_posts", "events_settings_options" );
    add_settings_section( "events_cpt_settings", __( "Events Page Settings", "FoundationPress" ), "events_settings_dummy", "edit_posts"  ); //Make settings text section
    add_settings_field( "events_settings_cpt_page", __( "Page for events", "FoundationPress" ), "events_settings_page_select", "edit_posts", "events_cpt_settings" );
}

function events_settings_dummy() {}

//Validate Settings
function events_settings_validate ($input) {
    $valid = get_option ( "events_settings_options" );
    $valid['events_page'] = (int) $input['events_page'];
    return $valid;  
}

//Settings Fields
function events_settings_page_select() {
    $options = get_option( 'events_settings_options' );
    wp_dropdown_pages(
        array(
            'name' => 'events_settings_options[events_page]',
            'echo' => 1,
            'show_option_none' => __( '&mdash; Select &mdash;' ),
            'option_none_value' => '0',
            'selected' => $options['events_page']
        )
    ); 
}

Um es zum Laufen zu bringen, habe ich Unterschiede zwischen den beiden Beispielen bemerkt und do_settings_sections in edit_posts geändert. Ich denke jetzt, dass der Zweck darin besteht, Berechtigungen oder Fähigkeiten zu vergeben WordPress.

Könnte jemand helfen, meinen Code zu verstehen, bitte? Ich bin im Kreis herumgegangen und würde es sehr begrüßen, wenn noch ein paar Augen darüber hinweggingen.

Danach muss ich es so machen, dass die Seite tatsächlich genauso funktioniert wie das Festlegen von Seiten auf der Seite "Lesen", um meine benutzerdefinierten Posttyp-Archive zu laden.

Vielen Dank Jungs!

BEARBEITEN:

Wenn du stoßen musst, brauchst du dringend Hilfe! Gerne Paypal ein Bier vorbei für eine Verlegenheit!


Kann mir überhaupt jemand helfen?
Luke Wale

es sollte funktionieren. Ich habe deinen Code getestet. Oder brauchen Sie hier Hilfe?
Iantsch

Beim Lesen Ihrer Frage bin ich mir nicht sicher, wofür Sie Hilfe benötigen, aber hier ist eine Antwort, mit der Sie eine Seitenvorlage als
Archivseite

Ist es Ihr Ziel, einfach eine benutzerdefinierte Vorlage für einen benutzerdefinierten Beitragstyp zu erstellen?
Slam

Antworten:


1

Es gibt eine schmutzige (eigentlich verdammt schmutzige) Möglichkeit, eine gewöhnliche WordPress-Seite als Archivseite von einer Seite mit benutzerdefinierten Einstellungen für den Post-Typ anzuhängen.

Sie müssen zuerst die Registrierung des Post-Typs aufheben und erneut erstellen. Wenn Sie keine benutzerdefinierten Argumente verwenden oder wenn Sie mutig genug sind, versuchen Sie diesen Code.

Fügen Sie dieses Codefragment zum Ende Ihrer Einstellungsseite hinzu.

if(isset($_GET['settings-updated']) && $_GET['settings-updated'] == true){
    //Dirty as hell
    $esettings = get_option ( "events_settings_options" );
    $getslug = get_post_field('post_name',$esettings['events_page']);

    unregister_post_type('events');
    register_post_type('events',array(
        'public' => true,
        'rewrite' => array('slug'=>'events'),
        'has_archive' => $getslug,
    ));
    //Needed for automated rewrite rules
    flush_rewrite_rules();
    //To test the functionality
    echo get_post_type_archive_link( 'events' );
}

1
Ich fühlte mich schmutzig, als ich es las, aber ich bin beeindruckt.
MikeNGarrett
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.