Suchen Sie nach einer Möglichkeit, eine neue Metabox in Ihrem Beitragsbearbeitungsbildschirm mit einem Auswahlmenü zu erstellen? Es gibt wahrscheinlich ein Plugin dafür, aber wir haben einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um PDF-Dateien mit benutzerdefinierter Metabox-Dateiauswahl an Beiträge anzuhängen.
Anweisungen:
Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:
add_action("admin_init", "pdf_init");
add_action('save_post', 'save_pdf_link');
function pdf_init(){
add_meta_box("my-pdf", "PDF Document", "pdf_link", "post", "normal", "low");
}
function pdf_link(){
global $post;
$custom = get_post_custom($post->ID);
$link = $custom["link"][0];
$count = 0;
echo '<div class="link_header">';
$query_pdf_args = array(
'post_type' => 'attachment',
'post_mime_type' =>'application/pdf',
'post_status' => 'inherit',
'posts_per_page' => -1,
);
$query_pdf = new WP_Query( $query_pdf_args );
$pdf = array();
echo '<select name="link">';
echo '<option class="pdf_select">SELECT pdf FILE</option>';
foreach ( $query_pdf->posts as $file) {
if($link == $pdf[]= $file->guid){
echo '<option value="'.$pdf[]= $file->guid.'" selected="true">'.$pdf[]= $file->guid.'</option>';
}else{
echo '<option value="'.$pdf[]= $file->guid.'">'.$pdf[]= $file->guid.'</option>';
}
$count++;
}
echo '</select><br /></div>';
echo '<p>Selecting a pdf file from the above list to attach to this post.</p>';
echo '<div class="pdf_count"><span>Files:</span> <b>'.$count.'</b></div>';
}
function save_pdf_link(){
global $post;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; }
update_post_meta($post->ID, "link", $_POST["link"]);
}
add_action( 'admin_head', 'pdf_css' );
function pdf_css() {
echo '<style type="text/css">
.pdf_select{
font-weight:bold;
background:#e5e5e5;
}
.pdf_count{
font-size:9px;
color:#0066ff;
text-transform:uppercase;
background:#f3f3f3;
border-top:solid 1px #e5e5e5;
padding:6px 6px 6px 12px;
margin:0px -6px -8px -6px;
-moz-border-radius:0px 0px 6px 6px;
-webkit-border-radius:0px 0px 6px 6px;
border-radius:0px 0px 6px 6px;
}
.pdf_count span{color:#666;}
</style>';
}
function pdf_file_url(){
global $wp_query;
$custom = get_post_custom($wp_query->post->ID);
echo $custom['link'][0];
}
Um die PDF-Datei anzuzeigen, können Sie diesen Code verwenden:
<? pdf_file_url(); ?>
<a href="<? pdf_file_url(); ?>">My PDF File</a>
Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzuf ilde{A}gen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress kopieren / einf ilde{A}gen, damit Sie Ihre Website nicht versehentlich besch ilde{A}digen.
Wenn Ihnen dieser Code-Schnipsel gefallen hat, ziehen Sie bitte in Betracht, unsere anderen Artikel auf der Website zu lesen, wie z. B.: 20 beste WordPress-Kirchen-Themes zur Erweiterung der Gemeinde und wie man Affiliate-Links in Google Analytics verfolgt.
Hallo, ich muss mehr MIME-Typen hinzufügen, ist das möglich?
Sie können ein Array für den MIME-Typ erstellen, z. B.:
‘post_mime_type‘ => array(‘application/doc’,’application/pdf’)
Die funktioniert nicht in der Schleife.
Die <? pdf_file_url(); ?> funktioniert nicht in der Schleife.
Danke für den Code. :)
Hallo, danke für das Skript. Ich benutze es mit einem benutzerdefinierten Beitragstyp.
Die Anzeige ist korrekt, aber ich kann das PDF nicht speichern. Besser gesagt, es speichert es beim ersten Mal, aber dann kann ich es nicht mehr ändern. Ich vermute also, es ist die 'save'-Funktion:
function save_pdf_link(){
global $post;
if (defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE){ return $post->ID; }
update_post_meta($post->ID, “link”, $_POST[“link”]);
}
Mein benutzerdefinierter Typ heißt 'events'. Irgendwelche Ideen, wie es funktionieren könnte?
Danke
Hallo Kumpel, ich habe einen benutzerdefinierten Beitragstyp, 'listing', ich kann den obigen PHP-Code nicht hinzufügen, um das PDF anzuzeigen. Wenn ich diesen Code zu functions.php hinzufüge, wird er für meine Beiträge hinzugefügt, aber nicht für meine Listings.
Danke
Hallo, seit dem Upgrade auf WP3.5 ist dies aus meinen Beitrags-/Seitenbearbeitungen verschwunden, sodass ich keine PDFs mehr hinzufügen/bearbeiten kann. Kann mir jemand helfen?
Danke, Craig
GELÖST!!! dem Snippet fehlt "php"
Entschuldigung für mein Englisch:
Kannst du diesen Code für eine Seite integrieren? Welche Änderungen müssen vorgenommen werden?
Ich habe einen Test zurück in einen Beitrag gemacht, aber es funktioniert nicht, dass der Link
keine Verbindung zu meiner Datei herstellt, bitte helfen Sie!!Gute Arbeit! Aber wenn ich versuche, mehrere Metaboxen hinzuzufügen, bekomme ich für jedes benutzerdefinierte Feld dieselbe Datei. Ich habe versucht, verschiedene Funktionen zu erstellen, wie z. B.: function pdf2_ Irgendwelche Ideen?
Ihr Code ruiniert meine Website.
fand es sehr nützlich, gibt es eine Möglichkeit, den Dateinamen anstelle von nur "PDF-Datei:" anzuzeigen?
Danke
ersetzen Sie einfach
$pdf[]= $file->guid
durch
$pdf[]= $file->post_title
Dies ist ein fantastischer Beitrag, äußerst nützlich. Ich versuche, ihn anzupassen, um mehrere PDFs auswählen und dann ausgeben zu können, aber ich habe Schwierigkeiten. Was wäre der beste Ansatz? Jede Beratung wird geschätzt, und nochmals vielen Dank für den Artikel.
Ich habe es nicht getestet, aber versuchen Sie, das Attribut "multiple" in das einzufügen.
Hallo Kevin,
Ich bin hier über eine Suche reingekommen und die pdf_link-Funktion war nützlich, um sie als Teil eines benutzerdefinierten Themes und von Post-Typen, an denen ich arbeite, zu reparieren.
Danke, du hast mir Stunden erspart.
Kevin, ich habe die Lösung gefunden:
Ersetze Folgendes:
echo ‘SELECT pdf FILE’;
durch Folgendes:
echo ”;
Ich weiß, dass dies ein sehr alter Beitrag ist, aber die richtige Lösung wäre meiner Meinung nach, einen leeren Wert zu übergeben!
Ersetze Folgendes:
echo ‘SELECT pdf FILE’;
durch Folgendes:
echo ‘SELECT pdf FILE’;
Ich kann mir so viele Websites vorstellen, die davon profitieren würden!
Wie würde ich das in eine if-Anweisung einbauen? Wenn also eine PDF-Datei hochgeladen wurde, wird beispielsweise der Link angezeigt...
Du könntest einfach die pdf_file_url-Funktion durch Folgendes ersetzen, das die Dinge für dich einrichten würde. http://pastebin.com/KZmigAyF
Vielen Dank, Kevin, habe es gerade getestet und es funktioniert wie erwartet 🙂 fantastisch – werde es erneut twittern
Super, freut mich zu hören, dass ich helfen konnte.
Link funktioniert nicht