Add code into on a per page/post basis

As you said per page/post basis, this would work for each post add_action(‘wp_head’, ‘add_link_in_head’); function add_link_in_head() { global $post; if(!empty($post)) { $alternate = get_post_meta($post->ID, ‘alternate’, true); $hreflang = get_post_meta($post->ID, ‘hreflang’, true); if(!empty($alternate) && !empty($hreflang)) { ?> <link rel=”alternate” href=”https://wordpress.stackexchange.com/questions/110260/<?php echo $alternate; ?>” hreflang=”<?php echo $hreflang; ?>” /> <?php } } } If there is no … Read more

How can I get wp_head() as a string instead of echoing it?

You can use PHP’s output buffering. WIth this you can write a wrapper for the get_head() function function wpse251841_wp_head() { ob_start(); wp_head(); return ob_get_clean(); } You can then use this as $data = array( ‘wpHead’ => wpse251841_wp_head(), ‘postContent’ => $post->post_content, ‘postContentFiltered’ => apply_filters( ‘the_content’, $post->post_content ) ); Reference: Output Control Functions

How can I reduce the amount of files loaded/included per plugin?

Previous versions of WordPress didn’t really provide a good means to conditionally enqueue stylesheets and JavaScript within a plugin (i.e. only when needed). So most plugin authors enqueued both on every WordPress init/load, even if the plugin wasn’t being used on a given page. Current versions of WordPress allow for enqueuing later in the flow … Read more

Hook into wp_head(); in a plugin

Did you try this? function hook_header() { $example_position = get_theme_mod( ‘logo_placement’ ); if( $example_position != ” ) { switch ( $example_position ) { case ‘left’: // Do nothing. The theme already aligns the logo to the left break; case ‘right’: echo ‘<style type=”text/css”>’; echo ‘#main-header #logo{ float: right; }’; echo ‘</style>’; break; case ‘center’: echo … Read more

How to control initial wp_head() output?

Here is the current list of actions that is currently hooked by default to wp_head Reposted here to avoid unnecessary opening multiple browser windows add_action( ‘wp_head’, ‘_wp_render_title_tag’, 1 ); add_action( ‘wp_head’, ‘wp_enqueue_scripts’, 1 ); add_action( ‘wp_head’, ‘feed_links’, 2 ); add_action( ‘wp_head’, ‘feed_links_extra’, 3 ); add_action( ‘wp_head’, ‘rsd_link’ ); add_action( ‘wp_head’, ‘wlwmanifest_link’ ); add_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, … Read more

Change Page’s Tag Using functions.php File

Check this out function custom_title($title_parts) { $title_parts[‘title’] = “Page Title”; return $title_parts; } add_filter( ‘document_title_parts’, ‘custom_title’ ); In custom_title, $title_parts contains ‘title’, ‘page’ (the pagination), ‘tagline’ (the slogan you specified) and ‘site’. Set “title” the way you like.

Multi-page posts do not get indexed by Google due to canonical URLs

You will need to replace the default rel_canonical function to do this: function wpse_84647_rel_canonical() { /* Only affect singular posts. Exit early if Yoast SEO is doing this for us */ if ( ! is_singular() || class_exists( ‘WPSEO_Frontend’ ) ) return; /* Get the post permalink */ $post = get_queried_object(); $link = trailingslashit( get_permalink( $post->ID … Read more