I have a custom post type for 'news' which contains a 'news-tags' taxonomy. And another post type 'practices' which are tagged in news items. When I update any post of the 'practices' type, all tags for that practice are being incorrectly removed from all news items. As an example, if I tag a news post with the "real estate" practice, then update the Real Estate practice, the Real Estate tag is removed from ALL News items. Anyone know where I should begin troubleshooting? I've removed all plugins except ACF and the problem still exists.
The News Post Type...
<?php
if ( ! defined( 'ABSPATH' ) )
exit;
if( class_exists( 'CT_News' ) )
return;
class CT_News {
const POST_TYPE = 'ct-news';
const TAX_TAGS = 'ct-news-tags';
const PERMALINK = 'news';
public function __construct( $post = NULL ){
if( is_object( $post ) ){
foreach ( get_object_vars( $post ) as $key => $value )
$this->$key = $value;
}
}
public function get_post_type(){
return self::POST_TYPE;
}
public function get_tax_tags(){
return self::TAX_TAGS;
}
public function _init(){
add_action( 'init', array( $this, '_register' ) );
add_action( 'init', array( $this, '_register_tax' ) );
add_filter( 'enter_title_here', array( $this, '_title_text' ) );
add_shortcode( 'display-news', array( $this, 'display_news_shortcode' ) );
add_action( 'pre_get_posts', array( $this, 'filter_news_archive' ) );
add_filter( 'searchwp_swp_query_args', array( $this, 'filter_news' ) );
// Setup Custom Sidebar
add_action( 'init', array( $this, 'setup_sidebars' ) );
}
public function _register(){
$labels = array(
'name' => _x( 'Articles', 'Post Type General Name', 'colmt' ),
'singular_name' => _x( 'Article', 'Post Type Singular Name', 'colmt' ),
'menu_name' => __( 'News', 'colmt' ),
'name_admin_bar' => __( 'News', 'colmt' ),
'archives' => __( 'News Archives', 'colmt' ),
'parent_item_colon' => __( 'Parent Article:', 'colmt' ),
'all_items' => __( 'All News', 'colmt' ),
'add_new_item' => __( 'Add New Article', 'colmt' ),
'add_new' => __( 'Add New', 'colmt' ),
'new_item' => __( 'New Article', 'colmt' ),
'edit_item' => __( 'Edit Article', 'colmt' ),
'update_item' => __( 'Update Article', 'colmt' ),
'view_item' => __( 'View Article', 'colmt' ),
'search_items' => __( 'Search News', 'colmt' ),
'not_found' => __( 'Not found', 'colmt' ),
'not_found_in_trash' => __( 'Not found in Trash', 'colmt' ),
'featured_image' => __( 'Featured Image', 'colmt' ),
'set_featured_image' => __( 'Set featured image', 'colmt' ),
'remove_featured_image' => __( 'Remove featured image', 'colmt' ),
'use_featured_image' => __( 'Use as featured image', 'colmt' ),
'insert_into_item' => __( 'Insert into article', 'colmt' ),
'uploaded_to_this_item' => __( 'Uploaded to this article', 'colmt' ),
'items_list' => __( 'News list', 'colmt' ),
'items_list_navigation' => __( 'News list navigation', 'colmt' ),
'filter_items_list' => __( 'Filter news list', 'colmt' ),
);
$rewrite = array(
'slug' => self::PERMALINK,
'with_front' => false,
'pages' => true,
'feeds' => true,
);
$args = array(
'label' => __( 'Article', 'colmt' ),
'description' => __( 'Colmt News Articles', 'colmt' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'revisions', 'genesis-seo', 'genesis-cpt-archives-settings' ),
'taxonomies' => array( self::TAX_TAGS ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-format-aside',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => self::PERMALINK,
'exclude_from_search' => false,
'publicly_queryable' => true,
'rewrite' => $rewrite,
'capability_type' => 'post',
);
register_post_type( self::POST_TYPE, $args );
}
public function _register_tax(){
$labels = array(
'name' => _x( 'Tags', 'Taxonomy General Name', 'colmt' ),
'singular_name' => _x( 'Tag', 'Taxonomy Singular Name', 'colmt' ),
'menu_name' => __( 'News Tags', 'colmt' ),
'all_items' => __( 'All Tags', 'colmt' ),
'parent_item' => __( 'Parent Tag', 'colmt' ),
'parent_item_colon' => __( 'Parent Tag:', 'colmt' ),
'new_item_name' => __( 'New Tag Name', 'colmt' ),
'add_new_item' => __( 'Add New Tag', 'colmt' ),
'edit_item' => __( 'Edit Tag', 'colmt' ),
'update_item' => __( 'Update Tag', 'colmt' ),
'view_item' => __( 'View Tag', 'colmt' ),
'separate_items_with_commas' => __( 'Separate tags with commas', 'colmt' ),
'add_or_remove_items' => __( 'Add or remove tags', 'colmt' ),
'choose_from_most_used' => __( 'Choose from the most used', 'colmt' ),
'popular_items' => __( 'Popular Tags', 'colmt' ),
'search_items' => __( 'Search News Tags', 'colmt' ),
'not_found' => __( 'Not Found', 'colmt' ),
'no_terms' => __( 'No tags', 'colmt' ),
'items_list' => __( 'Tags list', 'colmt' ),
'items_list_navigation' => __( 'Tags list navigation', 'colmt' ),
);
$rewrite = array(
'slug' => 'news-tags',
'with_front' => false,
'hierarchical' => false,
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => false,
'show_tagcloud' => true,
'rewrite' => $rewrite,
);
register_taxonomy( self::TAX_TAGS, array( self::POST_TYPE ), $args );
}
function _title_text( $title ){
$screen = get_current_screen();
if ( $screen->post_type != self::POST_TYPE )
return $title;
return __( 'Enter Article Title', 'colmt' );
}
public function archive_adjustments(){
if( ! is_post_type_archive( self::POST_TYPE ) )
return;
//* Force Full Width Content Layout
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' );
}
public function get_related( $context, $post_id = NULL, $count = 1 ){
$news_args = array(
'post_type' => self::POST_TYPE,
'post_status' => 'publish',
'posts_per_page' => $count,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => $context . '-tags',
'value' => '"' . $post_id . '"', // wrap in quotes to match exact value in serialized field.
'compare' => 'LIKE'
)
)
);
return new WP_Query( $news_args );
}
/**
* Display News Shortcode
* @param array $atts Shortcode Atts
* @param string $content Shortcode Content
* @return string HTML/Content
*/
function display_news_shortcode( $atts = array(), $content = NULL ){
$atts = shortcode_atts(
array(
'count' => 3,
'context' => NULL,
'format' => 'F j, Y',
'more-text' => __( 'More News', 'colmt' ),
'more-class' => 'more-news',
'related' => NULL
), $atts, 'display-news' );
if( $atts['related'] && $atts['context'] ){
$news = $this->get_related( $atts['context'], $atts['related'], $atts['count'] );
} else {
$news_args = array(
'post_type' => self::POST_TYPE,
'post_status' => 'publish',
'posts_per_page' => $atts['count']
);
$news = new WP_Query( $news_args );
}
if( ! $news->have_posts() )
return '';
$output = '<div class="news">';
global $post;
if( count( $news->posts ) < $atts['count'] )
$atts['more-text'] = false;
while( $news->have_posts() ): $news->the_post();
$permalink = get_permalink();
$excerpt = $post->post_excerpt ? get_the_excerpt() : get_the_title();
$output .= '<div class="news-item">';
$output .= '<div class="news-date">' . get_the_date( $atts['format'] ) . '</div>';
$output .= '<div class="news-excerpt"><a href="' . esc_attr( $permalink ) . '">';
$output .= $excerpt;
$output .= '</a></div>';
$output .= '</div><!-- .news-item -->';
endwhile;
wp_reset_postdata();
if( $atts['more-text'] ){
$more_link = '/' . self::PERMALINK . '/';
if( $atts['related'] && $atts['context'] )
$more_link .= '?' . $atts['context'] . '=' . $atts['related'];
$output .= '<p class="read-more-news"><a href="' . $more_link . '" class="' . esc_attr( $atts['more-class'] ) . '">' . $atts['more-text'] . '</a></p>';
}
$output .= '</div><!-- .news -->';
return $output;
}
public function setup_sidebars(){
/**
* News Article (Singular) Sidebar
*/
genesis_register_sidebar( array(
'id' => 'news-article',
'name' => __( 'News Article (Singular)', 'colmt' ),
'description' => __( 'This is displayed on singular News Article templates', 'colmt' ),
) );
}
function filter_news_archive( $q ){
if( ! $q->is_main_query() )
return;
if( ! $q->is_post_type_archive( self::POST_TYPE ) )
return;
$args = $this->filter_news();
$meta_query = $q->get('meta_query');
if( ! is_array( $meta_query ) )
$meta_query = array();
unset( $args['meta_query']['relation'] );
foreach( $args['meta_query'] as $mq ){
$meta_query[] = $mq;
}
$meta_query['relation'] = 'OR';
$q->set( 'meta_query', $meta_query );
}
public function filter_news( $args = array() ){
if( ! is_post_type_archive( self::POST_TYPE ) )
return $args;
$meta_query = isset( $args['meta_query'] ) ? $args['meta_query'] : array();
if( ! is_array( $meta_query ) )
$meta_query = array();
// apply filters
if( isset( $_GET['practice-areas'] ) ){
$practice_area_id = intval( $_GET['practice-areas'] );
$meta_query[] = array(
'key' => 'practice-areas-tags',
'value' => '"' . $practice_area_id . '"',
'compare' => 'LIKE'
);
}
if( isset( $_GET['attorneys'] ) ){
$attorney_id = intval( $_GET['attorneys'] );
$meta_query[] = array(
'key' => 'attorneys-tags',
'value' => '"' . $attorney_id . '"',
'compare' => 'LIKE'
);
}
$args['meta_query']['relation'] = 'OR';
$args['meta_query'] = $meta_query;
return $args;
}
}
The Practices Post Type:
<?php
if ( ! defined( 'ABSPATH' ) )
exit;
if( class_exists( 'CT_Practice_Area' ) )
return;
class CT_Practice_Area {
const POST_TYPE = 'ct-practice-area';
private static $_this;
public function __construct( $post = NULL ){
self::$_this = $this;
if( is_object( $post ) ){
foreach ( get_object_vars( $post ) as $key => $value )
$this->$key = $value;
}
}
public function get_post_type(){
return self::POST_TYPE;
}
public function _init(){
add_action( 'init', array( $this, '_register' ) );
add_filter( 'enter_title_here', array( $this, '_title_text' ) );
add_shortcode( 'practice-areas-list', array( $this, 'practice_areas_list_shortcode' ) );
// bidirectional field syncs
add_filter( 'acf/update_value/name=clients-tags', array( self::$_this, 'bidirectional_sync_practice_areas_tags' ), 10, 3 );
add_filter( 'acf/update_value/name=practice-area-contacts', array( self::$_this, 'bidirectional_sync_attorney_practice_area_contacts' ), 10, 3 );
add_filter( 'acf/update_value/name=practice-area-attorneys', array( self::$_this, 'bidirectional_sync_attorney_practice_areas' ), 10, 3 );
//add_action( 'template_redirect', array( $this, 'disable_root_practice_areas' ) );
add_action( 'init', array( $this, 'setup_sidebars' ) );
add_filter( 'pre_get_posts', array( $this, 'archive_query_adjustments' ) );
add_filter( 'get_previous_post_where', array( $this, 'exclude_parent_posts' ), 10, 5 );
add_filter( 'get_next_post_where', array( $this, 'exclude_parent_posts' ), 10, 5 );
add_image_size( 'practice-area-archive', 220, 110, true );
}
public function _register(){
$labels = array(
'name' => _x( 'Services', 'Post Type General Name', 'colmt' ),
'singular_name' => _x( 'Service', 'Post Type Singular Name', 'colmt' ),
'menu_name' => __( 'Services', 'colmt' ),
'name_admin_bar' => __( 'Services', 'colmt' ),
'archives' => __( 'Services', 'colmt' ),
'parent_item_colon' => __( 'Parent Service:', 'colmt' ),
'all_items' => __( 'All Services', 'colmt' ),
'add_new_item' => __( 'Add New Service', 'colmt' ),
'add_new' => __( 'Add New', 'colmt' ),
'new_item' => __( 'New Service', 'colmt' ),
'edit_item' => __( 'Edit Service', 'colmt' ),
'update_item' => __( 'Update Service', 'colmt' ),
'view_item' => __( 'View Service', 'colmt' ),
'search_items' => __( 'Search Services', 'colmt' ),
'not_found' => __( 'Not found', 'colmt' ),
'not_found_in_trash' => __( 'Not found in Trash', 'colmt' ),
'featured_image' => __( 'Featured Image', 'colmt' ),
'set_featured_image' => __( 'Set featured image', 'colmt' ),
'remove_featured_image' => __( 'Remove featured image', 'colmt' ),
'use_featured_image' => __( 'Use as featured image', 'colmt' ),
'insert_into_item' => __( 'Insert into Service Description', 'colmt' ),
'uploaded_to_this_item' => __( 'Uploaded to this Service', 'colmt' ),
'items_list' => __( 'Services list', 'colmt' ),
'items_list_navigation' => __( 'Services list navigation', 'colmt' ),
'filter_items_list' => __( 'Filter Services list', 'colmt' ),
);
$rewrite = array(
'slug' => 'practice-area',
'with_front' => false,
'pages' => true,
'feeds' => true,
);
$args = array(
'label' => __( 'Practice Area', 'colmt' ),
'description' => __( 'Colmt Practice Areas', 'colmt' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'revisions', 'page-attributes', 'genesis-seo' ),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 20,
'menu_icon' => 'dashicons-index-card',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => 'practice-areas',
'exclude_from_search' => false,
'publicly_queryable' => true,
'rewrite' => $rewrite,
'capability_type' => 'post',
);
register_post_type( self::POST_TYPE, $args );
}
// function disable_root_practice_areas(){
// if( ! is_singular( self::POST_TYPE ) )
// return;
// $obj = get_queried_object();
// if( ! $obj->post_parent ){
// wp_redirect( '/practice-areas/' );
// exit();
// }
// }
function _title_text( $title ){
$screen = get_current_screen();
if ( $screen->post_type != self::POST_TYPE )
return $title;
return __( 'Enter Practice Area Name', 'colmt' );
}
public function bidirectional_sync_practice_areas_tags( $value, $post_id, $field ) {
return ct_sync_field( 'practice-areas-tags', $value, $post_id, $field );
}
public function bidirectional_sync_attorney_practice_area_contacts( $value, $post_id, $field ) {
return ct_sync_field( 'attorney-practice-area-contacts', $value, $post_id, $field );
}
public function bidirectional_sync_attorney_practice_areas( $value, $post_id, $field ) {
return ct_sync_field( 'attorney-practice-areas', $value, $post_id, $field );
}
public function setup_sidebars(){
genesis_register_sidebar( array(
'id' => 'practice-area',
'name' => __( 'Practice Area (Singular)', 'colmt' ),
'description' => __( 'This is displayed on singular Practice Area templates', 'colmt' ),
) );
}
public function archive_query_adjustments( $q ){
if( is_admin() )
return $q;
if( ! $q->is_main_query() || ! $q->is_post_type_archive( self::POST_TYPE ) )
return $q;
$q->set( 'posts_per_page', '-1' );
$q->set( 'post_parent', '0' );
$q->set( 'orderby', 'menu_order title' );
$q->set( 'order', 'ASC' );
}
public function get_children( $parent = NULL ){
if( ! $parent )
$parent = get_the_ID();
$children_args = array(
'post_type' => self::POST_TYPE,
'post_parent' => $parent,
'post_status' => 'publish',
'posts_per_page' => '-1',
'orderby' => 'menu_order post_title',
'order' => 'ASC'
);
$children = new WP_Query( $children_args );
return $children;
}
public function exclude_parent_posts( $where, $in_same_term, $excluded_terms, $taxonomy, $post ){
if( get_post_type( $post ) != self::POST_TYPE )
return $where;
global $wpdb;
$exclude_parents = 'p.post_parent != 0';
$where .= $where ? ' AND ' . $exclude_parents : $exclude_parents;
return $where;
}
public function practice_areas_list_shortcode( $atts = array(), $content = NULL ){
$atts = shortcode_atts(
array(
'source' => NULL,
'link-to-practice-area' => true,
'attorney' => get_the_ID()
), $atts, 'practice-areas-list' );
ct_boolean_atts( $atts );
if( ! $atts['source'] )
$atts['source'] = 'all';
$output = '';
$related_practice_areas = false;
$practice_areas_args = array();
if( $atts['source'] == 'attorney' ){
$related_practice_areas = get_field( 'attorney-practice-areas', $atts['attorney'] );
if( ! $related_practice_areas )
return $output;
} elseif( $atts['source'] == 'tagged' ){
$related_practice_areas = get_field( 'practice-areas-tags' );
if( ! $related_practice_areas )
return $output;
}
if( $related_practice_areas ){
$practice_area_ids = wp_list_pluck( $related_practice_areas, 'ID' );
$practice_areas_args['post__in'] = $practice_area_ids;
$practice_areas_args['orderby'] = 'post__in';
}
if( $atts['source'] == 'all' ){
$practice_areas_args = array(
'post_status' => 'publish',
'post_type' => self::POST_TYPE,
'posts_per_page' => '-1',
'post_parent' => 0,
'orderby' => 'menu_order post_title',
'order' => 'asc'
);
$practice_areas = new WP_Query( $practice_areas_args );
} else {
$practice_areas = $this->get_practice_areas( $practice_areas_args );
}
if( $practice_areas->have_posts() ):
$output .= '<ul class="practice-areas-list">';
while( $practice_areas->have_posts() ): $practice_areas->the_post();
$title = ct_get_practice_area_title_with_icon( '%s %s' );
$line = $atts['link-to-practice-area'] && $atts['source'] != 'all' ? sprintf( '<a href="%s">%s</a>', get_permalink( get_the_ID() ), $title ) : sprintf( '<span>%s</span>', $title );
$output .= sprintf( '<li class="practice-area">%s', $line );
$children = $this->get_children( get_the_ID() );
if( $children->have_posts() && $atts['source'] == 'all' ):
$output .= '<ul class="child-practice-areas">';
while( $children->have_posts() ): $children->the_post();
$line = $atts['link-to-practice-area'] ? sprintf( '<a href="%s">%s</a>', get_permalink( get_the_ID() ), get_the_title() ) : sprintf( '<span>%s</span>', get_the_title() );
$output .= sprintf( '<li class="practice-area">%s</li>', $line );
endwhile;
wp_reset_postdata();
$output .= '</ul><!-- .child-practice-areas -->';
endif;
$output .= '</li>';
endwhile;
wp_reset_postdata();
$output .= '</ul><!-- .practice-areas-list -->';
endif;
return $output;
}
public function get_practice_areas( $args = array() ){
$practice_areas_args = array(
'post_status' => 'publish',
'post_type' => self::POST_TYPE,
'posts_per_page' => '-1',
);
$practice_areas_args = array_merge( $practice_areas_args, $args );
return new WP_Query( $practice_areas_args );
}
}
Some filtering for news searches:
<?php
// add_filter( 'genesis_cpt_archive_intro_text_output', 'ct_insert_news_search' );
remove_action( 'genesis_before_loop', 'genesis_archive_title_description', 15 );
remove_action( 'genesis_before_loop', 'genesis_do_taxonomy_title_description', 15 );
add_action( 'genesis_before_loop', 'do_taxonomy_title_description', 16 );
add_filter( 'genesis_term_intro_text_output', 'ct_insert_news_search' );
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' );
function do_taxonomy_title_description() {
global $wp_query, $wp_embed;
if ( ! is_category() && ! is_tag() && ! is_tax() ) {
return;
}
$term = is_tax() ? get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ) : $wp_query->get_queried_object();
if ( ! $term ) {
return;
}
$heading = get_term_meta( $term->term_id, 'headline', true );
if ( empty( $heading ) ) {
$heading = $term->name . " News";
}
$intro_text = get_term_meta( $term->term_id, 'intro_text', true );
$intro_text = $wp_embed->autoembed( $intro_text );
$intro_text = do_shortcode( $intro_text );
$intro_text = wpautop( $intro_text );
$intro_text = apply_filters( 'genesis_term_intro_text_output', $intro_text ? $intro_text : 'Filter news by keyword' );
// $intro_text = apply_filters( 'genesis_term_intro_text_output', $intro_text ? $intro_text : '' );
/**
* Fires at end of doing taxonomy archive title and description.
*
* Allows you to reorganize output of the archive headings.
*
* @since 2.5.0
*
* @param string $heading Archive heading.
* @param string $intro_text Archive intro text.
* @param string $context Context.
*/
do_action( 'genesis_archive_title_descriptions', $heading, $intro_text, 'taxonomy-archive-description' );
}
function ct_insert_news_search( $text ) {
$post_type = CT()->news->get_post_type();
$post_url = get_post_type_archive_link( $post_type );
$clear_text_url = remove_query_arg( $post_type . '-filter', $post_url );
$filters = '';
if ( isset( $_GET['practice-areas'] ) ){
$filters .= '<input type="hidden" name="practice-areas" value="' . esc_attr( intval( $_GET['practice-areas'] ) ) . '" />';
$clear_text_url = add_query_arg( array( 'practice-areas' => intval( $_GET['practice-areas'] ) ), $clear_text_url );
}
if ( isset( $_GET['attorneys'] ) ){
$filters .= '<input type="hidden" name="attorneys" value="' . esc_attr( intval( $_GET['attorneys'] ) ) . '" />';
$clear_text_url = add_query_arg( array( 'attorneys' => intval( $_GET['attorneys'] ) ), $clear_text_url );
}
$search = '<form role="search" method="get" class="search-form" action="' . $post_url . '">
<label>
<a href="' . $clear_text_url . '" class="clear-search"><i class="fa fa-times"></i></a>
<span class="screen-reader-text">' . strip_tags( $text ) . '</span>
<input type="search" class="search-field" value="' . esc_attr( ct_get_news_search_string() ) . '" name="' . $post_type . '-filter" title="' . esc_attr( strip_tags( $text ) ) . '">
' . $filters . '
</label>
<input type="submit" class="search-submit" value="Search">
</form>';
$output = '<div class="news-search">' . $search . '</div>';
return $output;
}
add_action( 'genesis_entry_header', 'ct_archive_featured_image', 2 );
function ct_archive_featured_image(){
$featured = ct_get_featured_image( 'archive-featured' );
if ( ! $featured )
return;
echo '<div class="featured-image">';
echo '<img src="' . $featured[0] . '" />';
echo '</div>';
}
remove_action( 'genesis_entry_header', 'genesis_post_info', 12 );
add_action( 'genesis_entry_header', 'genesis_post_info', 9 );
add_filter( 'genesis_post_info', 'ct_news_post_info' );
function ct_news_post_info( $post_info ) {
$post_info = '[post_date] [post_edit]';
return $post_info;
}
add_filter( 'genesis_post_meta', 'ct_news_post_meta' );
function ct_news_post_meta( $post_meta ) {
$tags_list = get_the_term_list( get_the_ID(), CT()->news->get_tax_tags(), '', ', ' );
$attorneys = get_field( 'attorneys-tags' );
$practice_areas = get_field( 'practice-areas-tags' );
$attorneys_list = array();
$practice_areas_list = array();
if ( is_array( $attorneys ) ){
foreach( $attorneys as $attorney ){
if ( ! $attorney )
continue;
$attorneys_list[] = '<a href="' . get_permalink( $attorney->ID ) . '">' . get_the_title( $attorney->ID ) . '</a>';
}
}
if ( is_array( $practice_areas ) ){
foreach( $practice_areas as $practice_area ){
if ( ! $practice_area )
//todo Jim
echo($practice_area->ID);
continue;
$practice_areas_list[] = '<a href="' . get_permalink( $practice_area->ID ) . '">' . get_the_title( $practice_area->ID ) . '</a>';
}
}
$post_meta = $tags_list;
$post_meta .= $post_meta ? rtrim( ', ' . implode( ', ', $attorneys_list ), ', ' ) : implode( ', ', $attorneys_list );
$post_meta .= $post_meta ? rtrim( ', ' . implode( ', ', $practice_areas_list ), ', ' ) : implode( ', ', $practice_areas_list );
//echo($post_meta);
return $post_meta;
}
add_action( 'genesis_before_loop', 'ct_news_archive_header', 17 );
function ct_news_archive_header(){
$label = ct_get_news_search_string() ? __( 'News Search Results', 'colmt' ) : __( 'Most Recent News', 'colmt' );
if ( isset( $_GET['attorneys'] ) ){
//$attorney_name = get_field( 'attorney-goes-by', intval( $_GET['attorneys'] ) );
$attorney_name = get_the_title( intval( $_GET['attorneys'] ) );
$clear_filter_url = remove_query_arg( 'attorneys' );
$label .= ' <span class="filtered-by"><em>' . __( 'about ', 'colmt' ) . '</em><strong>' . $attorney_name . '</strong><a href="' . esc_attr( $clear_filter_url ) . '"><i class="fa fa-times"></i></a></span>';
}
if ( isset( $_GET['practice_areas'] ) ){
$practice_area = get_the_title( intval( $_GET['practice_areas'] ) );
$clear_filter_url = remove_query_arg( 'practice_areas' );
$label .= ' <span class="filtered-by"><em>' . __( 'about ', 'colmt' ) . '</em><strong>' . $practice_area . '</strong><a href="' . esc_attr( $clear_filter_url ) . '"><i class="fa fa-times"></i></a></span>';
} else { $label .= ''; }
echo '<div class="news-header">';
echo sprintf( '<div class="subsection-heading news-heading">%s</div>', $label );
echo sprintf( '<div class="subsection-heading tags-heading">%s</div>', __( 'Tags', 'colmt' ) );
echo '</div>';
}
function ct_get_news_search_string(){
return isset( $_REQUEST[ CT()->news->get_post_type() . '-filter' ] ) ? sanitize_text_field( $_REQUEST[ CT()->news->get_post_type() . '-filter' ] ) : '';
}
remove_all_actions( 'genesis_before_entry_content' );
remove_all_actions( 'genesis_entry_content' );
remove_all_actions( 'genesis_after_entry_content' );
if ( ct_get_news_search_string() && class_exists( 'SWP_Query' ) ){
remove_action( 'genesis_loop', 'genesis_do_loop' );
add_action( 'genesis_loop', 'ct_news_archive_search' );
remove_action( 'genesis_after_endwhile', 'genesis_posts_nav' );
}
function ct_news_archive_search(){
// retrieve our search query if applicable
$query = ct_get_news_search_string();
// retrieve our pagination if applicable
$current_page = isset( $_REQUEST[ CT()->news->get_post_type() . '-page'] ) ? absint( $_REQUEST[ CT()->news->get_post_type() . '-page'] ) : 1;
$engine = 'news'; // taken from the SearchWP settings screen
// see all args at https://searchwp.com/docs/swp_query/
$news_query = new SWP_Query( array(
's' => $query,
'engine' => $engine,
'page' => $current_page,
) );
// set up pagination
$pagination = paginate_links( array(
'format' => '?' . CT()->news->get_post_type() . '-page=%#%',
'current' => $current_page,
'total' => $news_query->max_num_pages,
) );
if ( ! empty( $news_query->posts ) ):
global $post;
do_action( 'genesis_before_while' );
foreach ( $news_query->posts as $post ):
setup_postdata( $post );
do_action( 'genesis_before_entry' );
printf( '<article %s>', genesis_attr( 'entry' ) );
do_action( 'genesis_entry_header' );
do_action( 'genesis_entry_footer' );
echo '</article>';
do_action( 'genesis_after_entry' );
endforeach; //* end of one post
wp_reset_postdata();
do_action( 'genesis_after_endwhile' );
if ( $news_query->max_num_pages > 1 ): ?>
<div class="navigation pagination" role="navigation">
<h2 class="screen-reader-text">Posts navigation</h2>
<div class="nav-links">
<?php echo wp_kses_post( $pagination ); ?>
</div>
</div>
<?php endif;
else :
do_action( 'genesis_loop_else' );
endif;
genesis();