Die Nutzung der Custom Post Types kann via Core recht leicht umgesetzt werden, einen kleine Funktion, die ich nutze um an bestimmter Stelle die Inhalte von dort zu holen möchte ich hier kurz ablegen. Nicht immer braucht man CPT für das Frontend oder im Query der Templates, darum nutze ich die folgende kleine Funktion um die Inhalte zu holen und an geeigneter Stelle zu verwerten. Dabei ist noch einiges an Potential für die Erweiterung offen, aber sie ist nutzbar.
Die Funktion als Plugin oder im Zugriff des Themes ablegen und darauf zugreifen. Dabei muss der String des Custom Post Type mitgegeben werden.
Alternativ können Werte für die Custom Fields übergeben werden; bei einem Wert reicht die Übergabe als String
get_custom_post_type_items( 'my_cpt', 'my_meta_key' );
oder via Array, wenn es sich um mehrere Werte handelt.
get_custom_post_type_items( 'my_cpt', array( 'my_meta_key', 'my_meta_key2' ) );
Die Funktion gibt ein Array zurück, in dem sich alle Inhalte befinden.
Parallel können über den Filter Hook wp_basis_get_cpt_items
die Argumente verändert werden, so dass der folgende WordPress Query nach euren Bedürfnissen abläuft.
function get_custom_post_type_items( $custom_post_type, $meta_data_key = FALSE, $args = FALSE ) {
if ( ! $custom_post_type )
return NULL;
$defaults = array(
'post_type' => $custom_post_type,
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'post_date',
'order' => 'DESC'
);
$args = wp_parse_args( $args, apply_filters( 'wp_basis_get_cpt_items', $defaults ) );
$posts = new WP_Query($args);
$return = array();
if ( $posts -> have_posts() ) {
while ( $posts -> have_posts() ) {
$posts -> the_post();
$post_id = get_the_ID();
$sub_post = new stdClass();
$sub_post -> post_id = $post_id;
$sub_post -> title = get_the_title();
$sub_post -> permalink = get_permalink($post_id);
$sub_post -> content = apply_filters( 'the_content', get_the_content() );
if ( $meta_data_key && is_string($meta_data_key) ) {
$meta_value = get_post_meta( $post_id, $meta_data_key, TRUE );
if ( ! empty($meta_value) )
$sub_post -> meta_data = $meta_value;
} elseif ( is_array($meta_data_key) ) {
foreach ( $meta_data_key as $key ) {
if ( ! empty($key) ) {
$meta_value = get_post_meta( $post_id, $key, TRUE );
if ( ! empty($meta_value) )
$sub_post -> meta_data[$key] = $meta_value;
}
}
}
$return[] = $sub_post;
}
}
wp_reset_query();
return $return;
}
Viel Freude beim Nutzen oder Erweitern.