Description
Implement the [bw_fields] shortcodeDisplay the chosen fields with labels, separator and field values
Usage
$string = bw_metadata( $atts, $content, $tag );Parameters
- $atts
- ( array ) optional – shortcode parameters
- $content
- ( string ) optional – not expected
- $tag
- ( string ) optional – shortcode tag when invoked for shortcode expansion
Returns
string formatted metadataTO DO
resolve quandary – when the field names are specified are we allowed to override the #theme setting? ie. Ignore #theme => false ? Answer: For "taxonomy" type fields the #theme setting may not be defined. BUT these fields have to be specified separately anyway.TO DO
decide best way to deal with nested usage of this shortcode or multiple usage of this shortcode when the post we're trying to process is different from the main post. This happens when we are combining information from multiple posts into one output. Current solution is to not produce anything, not even 'Not single'Source
File name: oik-fields/shortcodes/oik-fields.phpLines:
1 to 76 of 76
function bw_metadata( $atts=null, $content=null, $tag=null ) { if ( !function_exists( 'oik_is_shortcode_expansion_necessary') ) { return oik_is_shortcode_expansion_necessary; } if ( !oik_is_shortcode_expansion_necessary() ) { return "Not today thank you."; } $post_id = bw_array_get( $atts, "id", null ); if ( '.' === $post_id ) { $post_id = bw_current_post_id(); } if ( $post_id ) { $single = true; } else { $post_id = bw_current_post_id(); if ( $post_id === bw_global_post_id() ) { $single = true; } else { $single = is_single( $post_id ); } } bw_trace2( null, null, true, BW_TRACE_VERBOSE ); bw_backtrace( BW_TRACE_VERBOSE ); if ( $single ) { //bw_backtrace(); //p( "Fields for $post_id "); $name = bw_array_get_from( $atts, "fields,0", NULL ); if ( null == $name ) { $names = bw_get_field_names( $post_id ); } else { $name = wp_strip_all_tags( $name, TRUE ); $names = explode( ",", $name ); } if ( count( $names ) ) { foreach ( $names as $name ) { $theme_it = bw_get_field_data_arg( $name, "#theme", true ); if ( $theme_it ) { /** * We have to cater for "taxonomy" fields as well */ $type = bw_query_field_type( $name ); if ( $type === "taxonomy" ) { // bw_custom_column_taxonomy( $name, $post_id ); bw_format_taxonomy( $name, $post_id ); } else { //bw_custom_column_post_meta( $column, $post_id ); $post_meta = get_post_meta( $post_id, $name, FALSE ); bw_trace2( $post_meta, "post_meta", false, BW_TRACE_VERBOSE ); if ( false == bw_get_field_data_arg( $name, "#theme_null", true ) ) { $theme_it = bw_field_has_value( $post_meta, $name ); } if ( $theme_it ) { $customfields = array( $name => $post_meta ); bw_format_meta( $customfields ); } } } else { bw_theme_object_property( $post_id, $name, $atts ); } } } else { bw_trace2( "Invalid use of $tag. No field names to process for $post_id", null, true, BW_TRACE_WARNING ); } } else { //e( "Not single" ); } return( bw_ret() ); }View on GitHub
Called by
1 to 3 of 3
Invoked by
Calls
1 to 8 of 8
- bw_array_get() – Return the array[index] or array->index (for an object) or a default value if not set
- bw_backtrace() – Log a debug_backtrace() to the trace log file if tracing is active
- bw_field_has_value() – Determine if the field has a value
- bw_get_field_data_arg() – Return the value from a fields #args array, setting the default if not defined
- bw_get_field_names() – Return the array of field names for the selected post
- bw_query_field_type() – Query the field type given the field name
- bw_ret() – Use bw_ret() to return the contents of $bwecho, leaving the global value as NULL
- bw_trace2() – Trace $value to the trace log file if tracing is active
