• Resolved gld

    (@gld)


    I have a custom post type called ‘team’ and i use an archive page (archive-team.php) to look through the entries. All works well however Social Feather is picking up the title of the last entry as the page title. How do I change this to the title of the page (or how do I set the page title differently)?

    https://www.ads-software.com/plugins/social-media-feather/

Viewing 11 replies - 1 through 11 (of 11 total)
  • Can you describe the issue in more detail and provide a link to the page showing it?
    It makes me think that archive page is most likely not using The Loop correctly as using that WordPress coding practice should ensure that SMF works properly.

    Thread Starter gld

    (@gld)

    Thanks! One of the pages with the issue is here: https://arcatolabs.com/team/

    How are you inserting those icons on the page?

    Thread Starter gld

    (@gld)

    This page is an archive loop for a custom post type that I called ‘team’. There is a php function I have created in my functions.php called show_share_buttons() . The code for this functions is as follows and the function is called form the bottom of each of my pages.

    // return the page share buttons
    function show_share_buttons( $padding=true) {
    
    	$return_string  = '<div class="first alignright">';
    	if ($padding) $return_string .= '<p>&nbsp;</p><p>&nbsp;</p>';
    	$return_string .= '<p><b>Share:</b> ' . do_shortcode('[feather_share]') . '</p>';
    	$return_string .= '</div>';
    
    	return $return_string;
    
    }

    I need to see the whole loop to understand where the problem is. You can send the code to our contact form (under About -> Contact on our site) if for some reason you don’t want to show it publicly.

    For your convenience, this is the proper standard way to loop through a series of posts in WordPress.

    Thread Starter gld

    (@gld)

    Here you go:

    <?php
    
    //* Display the content
    remove_action( 'genesis_loop', 'genesis_do_loop' );
    add_action( 'genesis_loop', 'child_do_custom_loop' );
    
    add_filter( 'get_the_archive_title', function ( $title ) {
    	$title = 'The Arcato Team';
        return $title;
    });
    
    function child_do_custom_loop() {
    
    	$posts_per_page = 6;
    
    	echo '<article class="page type-page status-publish entry">';
    	echo '<div class="wrap">';
    
    	if ( have_posts() ) {
    
    		$counter = 0;
    		$page_no = htmlspecialchars($_GET["page"]);
    		$total_posts = wp_count_posts();
    		$max_pages = round($total_posts/$posts_per_page);
    		if ( empty ($page_no) ) $page_no=1;
    		if ( $page_no > $max_pages ) $page_no=1;
    		$start_post_no = ( $posts_per_page * $page_no ) - $posts_per_page;
    		$end_page_no = $start_post_no + $posts_per_page;
    
    		while ( have_posts() ) {
    
    			the_post();
    
    			if ( $counter < ( $start_post_no + $posts_per_page ) ) {
    
    				if ( $counter >= $start_post_no ) {
    
    					echo '<div class="first"></div>';
    					echo '<h1>' . get_the_title() . '</h1>';
    					$profile_image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $post ), 'medium' );
    					if ( !empty($profile_image_url) ) echo '<img src="' . $profile_image_url[0] . '" class="alignleft">';
    					echo the_content();
    					echo '<p>?</p>';
    
    				}
    				$counter++;
    
    			}
    
    		}
    
    		echo show_share_buttons();
    
    	}
    
    	echo '</div>';
    	echo '</article>';
    
    }
    
    // Run the loop
    genesis();

    The show_share_buttons() function is in my functions.php. Here’s the code for that:

    // return the page share buttons
    function show_share_buttons( $padding=true) {
    
    	$return_string  = '<div class="first alignright">';
    	if ($padding) $return_string .= '<p>?</p><p>?</p>';
    	$return_string .= '<p><b>Share:</b> ' . do_shortcode('[feather_share]') . '</p>';
    	$return_string .= '</div>';
    
    	return $return_string;
    
    }

    That’s because you’re calling the function from within a The Post loop, you actually don’t want to do that in order to obtain the root post (basically when you call the_post you’re telling SMF that you want that post’s information to be used for social sharing).

    You should be able to do it by having a call to:

    $share_buttons = show_share_buttons();

    before the while ( have_posts() ) { and then replace this line:
    echo show_share_buttons();
    with this line:
    echo $share_buttons;

    Thread Starter gld

    (@gld)

    ok I’ve done that but now it uses the title of the first record in the loop.

    $posts_per_page = 6;
    
    	echo '<article class="page type-page status-publish entry">';
    	echo '<div class="wrap">';
    	$share_buttons = show_share_buttons();
    
    	if ( have_posts() ) {
    
    		$counter = 0;
    		$page_no = htmlspecialchars($_GET["page"]);
    		$total_posts = wp_count_posts();
    		$max_pages = round($total_posts/$posts_per_page);
    		if ( empty ($page_no) ) $page_no=1;
    		if ( $page_no > $max_pages ) $page_no=1;
    		$start_post_no = ( $posts_per_page * $page_no ) - $posts_per_page;
    		$end_page_no = $start_post_no + $posts_per_page;
    
    		while ( have_posts() ) {
    
    			the_post();
    
    			if ( $counter < ( $start_post_no + $posts_per_page ) ) {
    
    				if ( $counter >= $start_post_no ) {
    
    					echo '<div class="first"></div>';
    					echo '<h1>' . get_the_title() . '</h1>';
    					$profile_image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $post ), 'medium' );
    					if ( !empty($profile_image_url) ) echo '<img src="' . $profile_image_url[0] . '" class="alignleft">';
    					echo the_content();
    					echo '<p>&nbsp;</p>';
    
    				}
    				$counter++;
    
    			}
    
    		}
    
    		echo $share_buttons;
    
    	}
    
    	echo '</div>';
    	echo '</article>';

    Then it means Genesis is initializing the post list before that custom child_do_custom_loop is called.

    I guess the best option in this case is to specify custom url and title for the share buttons, you can use shortcode parameters like this:
    [feather_share url="https://url_to_page" title="Page Title"]

    You can also use the function provided by SMF for a bit more power/control: synved_social_share_markup()

    Thread Starter gld

    (@gld)

    Taking your lead, I played around with looking at other hooks but no matter how early I call the function, it still takes the archive record. So I’ve now taken the passing parameters idea you have here and this is now working the way I want it. Thank you!

    Glad to hear, marking as solved.

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘Archive Page Title’ is closed to new replies.