The question:
How would one move the sharedaddy buttons included in Jetpack to be placed before a post’s or page’s content, rather than after it? I see that in sharing-service.php
the function that prints the buttons is hooked to the_content filter hook: add_filter( 'the_content', 'sharing_display', 19 );
I’m not sure what to place in my functions.php file to override that, though. I’m assuming I somehow need to cause the output from sharing-service.php
to be prepended to the_content
rather than appended to it.
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
Basically it line 480 in sharing-service.php
where it says:
return $text.$sharing_content;
and it should be
return $sharing_content.$text;
now changing that file won’t keep your changes on updates so you can copy that function (sharing_display) to your functions.php and rename it to something different say my_sharing_display
and make the change there.
Next you need to remove the filters that plugin adds and replace with your own so in your functions.php add:
//remove old
remove_filter( 'the_content', 'sharing_display');
remove_filter( 'the_excerpt', 'sharing_display');
//add new
add_filter( 'the_content', 'my_sharing_display', 19 );
add_filter( 'the_excerpt', 'my_sharing_display', 19 );
Update
the remove_filter hook is not actually removing because it’s missing the priority parameter , from the codex:
Important: To remove a hook, the $function_to_remove and $priority arguments must match when the hook was added. This goes for both filters and actions. No warning will be given on removal failure.
so change :
remove_filter( 'the_content', 'sharing_display');
remove_filter( 'the_excerpt', 'sharing_display');
to:
remove_filter( 'the_content', 'sharing_display',19);
remove_filter( 'the_excerpt', 'sharing_display',19);
Method 2
try this:
<?php
if ( function_exists( 'sharing_display' ) ) {
echo sharing_display();
}
the_content();
?>
worked for me
Method 3
Another option, would be to edit the Jetpack plugin files directly. Take out both add_filters()
for the_content
and the_excerpt
from sharing-service.php.
Then you can manually put <?php echo sharing_display(); ?>
in your theme’s loop wherever you want the sharing bar to be located.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0