it-swarm.com.de

template_redirect funktioniert anscheinend nicht ohne Grund

Nun, ich habe ein Plugin erstellt, das template_redirect für den benutzerdefinierten Beitragstyp squeezepages verwendet, und es funktioniert einwandfrei, aber ich habe den exakt gleichen Code kopiert, in ein neues Plugin eingefügt und es aktiviert (mit ein paar geringfügigen Anpassungen, zum Beispiel, die ich geändert habe) Der benutzerdefinierte Beitragstyp für newpages und der template_redirect bezieht die Vorlage aus einer anderen Quelle.) Und plötzlich funktioniert es nicht mehr?

Ich kann beide Plugins gleichzeitig aktivieren, die Squeeze-Seiten funktionieren, die neuen Seiten nicht. Es verwirrt mich so sehr. Ich habe sogar das Squeeze-Pages-Plugin deaktiviert und es funktioniert immer noch nicht. Ich habe alle Kombinationen ausprobiert (es gibt nur ein paar) und immer noch nichts. Es scheint, als würde es ohne Grund nicht funktionieren. Ich habe 2 Stunden lang auf denselben Code gestarrt und bin nicht in der Lage, es herauszufinden.

Hier ist der Code für meine benutzerdefinierten Beitragstypen:

add_action( 'init', 'ifp_create_post_type' );
function ifp_create_post_type() {
register_post_type( 'newpages',
    array(
        'labels' => array(
            'name' => __( 'New Pages' ),
            'singular_name' => __( 'New Page' )
        ),
    'public' => true,
    'menu_position' => 5,
    'rewrite' => true,
    'rewrite' => array('slug' => 'newpage', 'with_front' => FALSE),
    'supports' => array('title', 'editor', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'thumbnail', 'author', 'page-attributes')
    )
);
}

Und mein template_redirect:

function ifp_default_template() {
    if(get_post_type() == 'newpages') : global $wp_query, $post, $posts;
    include(PLUGINDIR . '/newpage/themes/default.php');
    exit; endif;
}
add_action('template_redirect', 'ifp_default_template');
2
Jared

Ich habe mein eigenes Problem gelöst. Ich musste flush_rewrite_rules( false ); nach meiner register_post_type -Funktion einfügen. Der Grund, warum es nicht funktionierte, ist, dass die Seite mit einem 404-Fehler zurückgegeben wurde. Ich habe herausgefunden, dass es sich um ein Permalink-Problem handelt und der obige Code hat es für mich gelöst.

3
Jared

Hier ist nicht viel Code ... Zerlegen wir ihn in Dinge, die schief gehen können:

  1. Vergewissern Sie sich, dass ifp_default_template() ausgelöst wird (eine frühere Umleitung könnte beispielsweise eine andere Vorlage und Matrizen enthalten und diese niemals erreichen).

  2. Stellen Sie sicher, dass get_post_type() den erwarteten Wert zurückgibt.

  3. Stellen Sie sicher, dass der Include-Pfad korrekt generiert wird (ich würde plugins_url() verwenden , er ist robuster als das Erstellen eines Pfads aus Zeichenfolgen).

1
Rarst