Schaltfläche/Link unmittelbar nach dem Titel zum Bearbeitungsbildschirm für benutzerdefinierte Beitragstypen hinzufügen

Lesezeit: 4 Minuten

Kelderics Benutzeravatar
Kelderich

Ich passe das Backend einer WordPress-Installation für einen Kunden an und habe mehrere benutzerdefinierte Beitragstypen hinzugefügt. Sie werden im Front-End über eine benutzerdefinierte Schleife innerhalb einer Seite angezeigt, sodass Benutzer nicht auf die einzelnen benutzerdefinierten Beiträge zugreifen sollten.

Um sicherzustellen, dass nicht versehentlich darauf zugegriffen wird, habe ich die entfernt Dauerlink Auswahlfeld, das die enthält Beitrag anzeigen Taste. Ich möchte eine hinzufügen Beitrag anzeigen Link oben auf der Seite neben Neuen Mitarbeiter hinzufügen. (Wenn dies nicht möglich ist, würde ich mich damit begnügen, die Datei abzufangen und zu ersetzen Neuen Mitarbeiter hinzufügen Taste)

Ich suche nach einem WordPress-Hook, um den Button dort zu platzieren, habe aber noch nichts gefunden. Das nächste, was ich fand, war ein Beitrag auf der WP-Core Blog (zitiert edit_form_advanced, edit_form_after_editor, edit_form_after_title), aber keiner der aufgeführten funktioniert dafür.

Die Schaltfläche, die ich hinzufügen möchte, ist diese PHP:

<a class="add-new-h2" href="https://stackoverflow.com/questions/22261284/<?php echo $displaypage.get_the_title($post_ID); ?>">View <?php echo $posttype; ?></a>

Mit $displaypage etwas in der Art von sein '/about-us/our-people/#'

Wirklich, alles, was ich brauche, ist, einen Weg zu finden, es anzuschließen. Ich weiß, was ich hinzufügen muss, sobald ich herausgefunden habe, wie ich es hinzufügen kann.

Prüfen

Bearbeiten:

Ich weiß, dass ich die Schaltfläche mit Javascript einfügen könnte, ohne mich überhaupt mit Hooks zu beschäftigen. Ich möchte dies jedoch nach Möglichkeit vermeiden, für Randfälle von Personen, die JS deaktivieren, und Personen mit sehr langsamen Verbindungen (jQuery wird nicht aktiviert, bis die Seite vollständig geladen ist, sodass sie in dieser Situation spät aufblitzt ).

Benutzeravatar von brasofilo
brasophilo

ich nur einen Haken gefunden nicht im Beitrag von WP Core zitiert und scheint die einzige zu sein, die der gewünschten Position am nächsten kommt:

Geben Sie hier die Bildbeschreibung ein

Das Problem ist, dass Add New (post type) ist in ein gewickelt <h2> Schild (Zeile 365 derselben Datei) und der Hook passiert danach.

add_action( 'edit_form_top', 'top_form_edit' );

function top_form_edit( $post ) {
    if( 'portfolio' == $post->post_type )
        echo "<a href="#" id='my-custom-header-link'>$post->post_type</a>";
}

Die einzige verbleibende Möglichkeit besteht darin, das DOM mit jQuery zu manipulieren:

add_action( 'admin_head-post.php', 'manipulate_dom' );
add_action( 'admin_head-post-new.php', 'manipulate_dom' );

function manipulate_dom()
{
    // Not our post type, exit earlier
    // Adjust post type
    if( 'portfolio' != get_current_screen()->post_type )
        return;
    ?>
    <script type="text/javascript">
        jQuery(document).ready( function($) 
        {
            // your thing
            // $('#my-custom-header-link').moveAround();        
        });     
    </script>
    <?php 
}

  • Ich kann mit jQuery ganz ohne Haken manipulieren, indem ich einfach die Schaltfläche einfüge, die ich brauche. Ich möchte es nach Möglichkeit ohne JS einfügen.

    – Kelderich

    9. März 2014 um 0:30 Uhr

  • Hast du den Hook probiert, den ich gepostet habe? Hast du die Core-Datei überprüft? Das ist der nächste Haken … JS steht für eine pixelgenaue Position. Ob es mit CSS geht, weiß ich nicht.

    – Brasilo

    9. März 2014 um 0:33 Uhr


  • Ich habe es nicht getan, denn wenn ich jQuery verwende, kann ich den Inhalt direkt einfügen, ohne Hooks zu verwenden. Ich habe das Bearbeitungsformular für Fortgeschrittene durchlaufen und kann nichts finden, was Sie übersehen haben, was frustrierend, aber nicht völlig unerwartet ist. Es wäre jedoch ein netter Ort, um einen Haken zu haben, also denke ich, das Einzige, was zu tun ist, ist ein Verbesserungsticket zu öffnen. Trotzdem danke!

    – Kelderich

    9. März 2014 um 3:00 Uhr

Benutzeravatar von Christian Žagarskas
Christian Zagarskas

Bin auf das gleiche Problem gestoßen, die Lösung, die ich verwendet habe, war wie folgt:

  • Ich habe mich in ‘admin_notices’ eingehakt

  • habe meinen eigenen Header umgeschrieben

  • verwendete CSS, um den vorhandenen Header wie folgt auszublenden:

    function rewrite_cpt_header(){
           $screen = get_current_screen();
         if( $screen->id !='edit-location' ){
             return;
         } else {
             ?>
             <div class="wrap">
             <h1 class="wp-heading-inline show" style="display:inline-block;">Locations</h1>
             <a href="<?php echo admin_url('post-new.php?post_type=location'); ?>" class="page-title-action show">Add New Location</a>
             <a href="<?php echo admin_url('edit-tags.php?taxonomy=location_types&post_type=location'); ?>" class="page-title-action show">Edit Location Types</a>
             </div>
    
             <style scoped>
             .wp-heading-inline:not(.show),
             .page-title-action:not(.show) { display:none !important;}
             </style>
             <?php
         }
     }
     add_action('admin_notices','rewrite_cpt_header');
    

  • Dies sollte die akzeptierte Antwort sein, du hast gerockt! (J)

    – Schehroz Ahmed

    16. März 2019 um 22:20 Uhr

1387340cookie-checkSchaltfläche/Link unmittelbar nach dem Titel zum Bearbeitungsbildschirm für benutzerdefinierte Beitragstypen hinzufügen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy