wake-up-neo.com

Putting Inhalt in die header.php ohne wp_head

Ich baue ein Plugin. Ich muss bestimmte Dinge in der header.php-Datei des Themas ausgeben, je nachdem, ob/sonst ich schreibe. Allerdings bin ich noch nicht so weit. Ich habe gerade gelernt, um die Funktion in die header.php zu pushen. Ich muss wp_head verwenden. Wenn ich das tue, bekomme ich leider eine Menge zusätzliches Material, das von WordPress verarbeitet wird und in die Funktion wp_head eingeklemmt ist.

<meta name='robots' content='noindex,follow' />
        <script type="text/javascript">
            window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"http:\/\/zachis.it\/client\/wgp-master\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.4.2"}};
            !function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d"),f=String.fromCharCode;return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(f(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(f(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(f(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(f(55357,56835),0,0):e.fillText(f(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
        </script>
        <style type="text/css">
img.wp-smiley,
img.emoji {
    display: inline !important;
    border: none !important;
    box-shadow: none !important;
    height: 1em !important;
    width: 1em !important;
    margin: 0 .07em !important;
    vertical-align: -0.1em !important;
    background: none !important;
    padding: 0 !important;
}
</style>
<link rel='stylesheet' id='open-sans-css'  href='https://fonts.googleapis.com/css?family=Open+Sans%3A300italic%2C400italic%2C600italic%2C300%2C400%2C600&#038;subset=latin%2Clatin-ext&#038;ver=4.4.2' type='text/css' media='all' />
<link rel='stylesheet' id='dashicons-css'  href='http://zachis.it/client/wgp-master/wp-includes/css/dashicons.min.css?ver=4.4.2' type='text/css' media='all' />
<link rel='stylesheet' id='admin-bar-css'  href='http://zachis.it/client/wgp-master/wp-includes/css/admin-bar.min.css?ver=4.4.2' type='text/css' media='all' />
<link rel='https://api.w.org/' href='http://zachis.it/client/wgp-master/wp-json/' />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://zachis.it/client/wgp-master/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://zachis.it/client/wgp-master/wp-includes/wlwmanifest.xml" /> 
<meta name="generator" content="WordPress 4.4.2" />
test<style type="text/css" media="print">#wpadminbar { display:none; }</style>
<style type="text/css" media="screen">
    html { margin-top: 32px !important; }
    * html body { margin-top: 32px !important; }
    @media screen and ( max-width: 782px ) {
        html { margin-top: 46px !important; }
        * html body { margin-top: 46px !important; }
    }
</style>

Gibt es eine andere Möglichkeit, Variablen von einem Plugin in die header.php zu schreiben, ohne wp_head zu verwenden?

2
Zach Smith

Das Entfernen von wp_head hat einige negative Auswirkungen, da Sie so praktisch 90% der Plugins auf wordpress.org nicht verwenden können. Außerdem wird ein Teil des Codes, den Sie sehen, nur angezeigt, wenn Sie angemeldet sind (es sei denn, Ihr Design fügt ihn ausdrücklich hinzu). Beispielsweise sind die Dashicons, Open Sans- und Admin-Leisten-Stylesheets und Inline-Styles am unteren Rand vorhanden, sodass Sie die Admin-Leiste im Frontend verwenden können.

Hier sind einige Optionen.

1. Benutzerdefinierter Header - Dies ist eine sichere Alternative, wenn Sie nicht möchten, dass wp_head auf einigen Ihrer Seiten angezeigt wird, aber Sie möchten ihn und andere WordPress-Plug-ins für andere Vorlagen verwenden können.

  1. Erstellen Sie eine Datei header-custom.php in Ihrem Themenordner, die wp_head nicht enthält.
  2. In Ihrer benutzerdefinierten Seitenvorlage rufen Sie diesen Header mit <?php get_header( 'custom' ); ?> auf.
  3. Wenn Sie sich mit Ihrem Plugin noch nicht einklinken können, können Sie anstelle von wp_head eine benutzerdefinierte Aktion verwenden. Grundsätzlich müssen Sie nur <?php do_action('custom_head'); ?> hinzufügen und dann in Ihr Plugin einbinden, so wie Sie es mit wp_head tun würden.

Beispiel

function my_plugin_custom_head_action() {
    // do stuff here
}
add_action('custom_head', 'my_plugin_custom_head_action');

Es gibt auch ein Plugin , das die Verwendung von benutzerdefinierten Hooks/Aktionen sehr einfach macht.


2. Entfernen Sie Dinge, die Sie nicht von wp_head wollen

// Remove emojis
function disable_emojis_wp_head() {
    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );    
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );  
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
    add_filter( 'tiny_mce_plugins', 'disable_emojis_wp_tinymce' );
}
add_action( 'init', 'disable_emojis_wp_head' );

function disable_emojis_wp_tinymce( $plugins ) {
    if ( is_array( $plugins ) ) {
        return array_diff( $plugins, array( 'wpemoji' ) );
    } else {
        return array();
    }
}

// Remove other crap in your example
add_action( 'get_header', function() {
    remove_action('wp_head', 'rsd_link'); // Really Simple Discovery service endpoint, EditURI link
    remove_action('wp_head', 'wp_generator'); // XHTML generator that is generated on the wp_head hook, WP version
    remove_action('wp_head', 'feed_links', 2); // Display the links to the general feeds: Post and Comment Feed
    remove_action('wp_head', 'index_rel_link'); // index link
    remove_action('wp_head', 'wlwmanifest_link'); // Display the link to the Windows Live Writer manifest file.
    remove_action('wp_head', 'feed_links_extra', 3); // Display the links to the extra feeds such as category feeds
    remove_action('wp_head', 'start_post_rel_link', 10, 0); // start link
    remove_action('wp_head', 'parent_post_rel_link', 10, 0); // prev link
    remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0); // relational links 4 the posts adjacent 2 the currentpost
    remove_action('template_redirect', 'wp_shortlink_header', 11);  
    remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
}, 99);

// Remove adminbar inline css on frontend
function removeinline_adminbar_css_frontend() {
    if ( has_filter( 'wp_head', '_admin_bar_bump_cb' ) ){
        remove_filter( 'wp_head', '_admin_bar_bump_cb' );
    }
}
add_filter( 'wp_head', 'removeinline_adminbar_css_frontend', 1 );

Und wenn Sie den Rest-API-Link entfernen möchten, wird dies meiner Meinung nach funktionieren:

remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );

In diesem WPSE-Beitrag hier finden Sie zusätzliche Lösungen zum Entfernen von Rest-APIs.

3
Bryan Willis