Ich habe gerade eine Beziehung zwischen einem Beitragstyp "Folgen" und einem Beitragstyp "Zeichentrickserie" eingerichtet.
Ich habe dieses Code-Bit verwendet, um es in das Meta-Feld einzufügen und das übergeordnete Element eines anderen Beitragstyps zuzuweisen:
add_action('admin_menu', function() {
remove_meta_box('pageparentdiv', 'episodes', 'normal');
});
add_action('add_meta_boxes', function() {
add_meta_box('episodes-parent', 'Cartoon Series', 'episodes_attributes_meta_box', 'episodes', 'side', 'default');
});
function episodes_attributes_meta_box($post) {
$post_type_object = get_post_type_object($post->post_type);
if ( $post_type_object->hierarchical ) {
$pages = wp_dropdown_pages(array('post_type' => 'cartoon-series', 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('(no parent)'), 'sort_column'=> 'menu_order, post_title', 'echo' => 0));
if ( ! empty($pages) ) {
echo $pages;
} // end empty pages check
} // end hierarchical check.
}
Auf dem Administratorbildschirm konnte ich die Serie als übergeordnetes Element für die Episode festlegen. Wenn ich jedoch versuche, den Beitrag anzuzeigen, erhalte ich den Wert 404. Die URL-Struktur lautet:
domain/episodes/series-name/episode-name
Die URL für die Serie lautet:
domain/cartoon-series/series-name
Ich möchte, dass die URL für die Folge lautet:
domain/cartoon-series/series-name/episode-name
Was vermisse ich? Ist es möglich, einen ganzen Beitragstyp zum Kind eines anderen Beitragstyps zu machen? Dann könnte ich sogar die URL für die Episodenliste erhalten:
domain/cartoon-series/series-name/episodes
Vielen Dank! Matt
Wie gewünscht, ist hier der Code für die beiden fraglichen benutzerdefinierten Beitragstypen:
$labels = array(
"name" => "Cartoon Series",
"singular_name" => "Cartoon Series",
"menu_name" => "Cartoon Series",
"all_items" => "All Cartoon Series",
"add_new" => "Add New",
"add_new_item" => "Add New Cartoon Series",
"edit" => "Edit",
"edit_item" => "Edit Cartoon Series",
"new_item" => "New Cartoon Series",
"view" => "View",
"view_item" => "View Cartoon Series",
"search_items" => "Search Cartoon Series",
"not_found" => "No Cartoon Series Found",
"not_found_in_trash" => "No Cartoon Series Found in Trash",
"parent" => "Parent Cartoon Series",
);
$args = array(
"labels" => $labels,
"description" => "",
"public" => true,
"show_ui" => true,
"has_archive" => true,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => true,
"rewrite" => array( "slug" => "cartoon-series", "with_front" => true ),
"query_var" => true,
"supports" => array( "title", "revisions", "thumbnail" ), );
register_post_type( "cartoon-series", $args );
$labels = array(
"name" => "Episodes",
"singular_name" => "Episode",
);
$args = array(
"labels" => $labels,
"description" => "",
"public" => true,
"show_ui" => true,
"has_archive" => true,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => true,
"rewrite" => array( "slug" => "episodes", "with_front" => true ),
"query_var" => true,
"supports" => array( "title", "revisions", "thumbnail" ), );
register_post_type( "episodes", $args );
Ich verwende das CPT-UI-Plugin, daher kann ich diesen Code nicht direkt bearbeiten. Dies ist nur der Exportcode, den die CPT-Benutzeroberfläche bereitstellt.
Ich habe keinen anderen Code, der die beiden CPTs verbindet. Vielleicht fehlt mir das ja. Ich habe gerade den Code online gefunden, der die Metabox auf der Seite platziert, um die Verknüpfung herzustellen. Reicht es nicht aus, die Arbeit zu erledigen? Sieht so aus, als würde post_parent gesetzt.
Vielen Dank! Matt
pre_get_posts
die Abfrage ohne Erfolg zu ändern. Es handelt sich um etwas Komplizierteres, das ich nicht verstehen konnte. Als ob eine Katze Eltern eines Hundes wäre. Ich empfehle, nur einen hierarchischen Beitragstyp zu verwenden oder die Beziehung mithilfe von Metafeldern festzulegen .
parent_id
Query Var und benötigt keinen weiteren Code, um die Beziehung festzulegen. Das Problem ist, dass die generierte URL von WordPress nicht erkannt wird. Ich habe versucht, eine Umschreiberegel zu finden , die funktioniert, aber ich hatte keinen Erfolg. Ich suche jetzt nach einer Lösung.