zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Custom Post Types auto category

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 02.02.2014, 19:24
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard Custom Post Types auto category

Hi ich frage mich wie ich in WP einem Custom Post Type automatisch die gewünschte Category zuweise.
Den Post Typ und die Category habe ich schon erstellt nur was muss ich jetzt in die functions.php eintragen?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 02.02.2014, 19:59
Benutzerbild von Thielo
Web Ninja
XHTMLforum-Kenner
 
Registriert seit: 17.09.2009
Ort: Stuttgart oder so
Beiträge: 3.372
Thielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein Lichtblick
Standard

Sowas? WordPress › Support » Set category to a custom post type automatically
__________________
Hier ein immer gültiges Statement: Überarbeite deine Code, lerne die Grundlagen, widersprich mir nicht, wehre dich nicht, ich habe Recht, wir sind Lolgion, wir sind viele.. potato...
All meine Angaben sind ohne Gewähr, es könnte also trotz meiner Unfehlbarkeit dazu kommen dass ich falsch liege

www.richard-thiel.de | Müssen Websiten überall gleich ausschauen?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 02.02.2014, 20:11
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Hi die Seite habe ich schon gefunden aber mein Eng....
Ich werde es erst einmal ausprobieren, dann melde ich mich noch ein mal.
Mit Zitat antworten
  #4 (permalink)  
Alt 03.02.2014, 10:39
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Guten Morgen.
Das auf der angegebenen Seite funktioniert leider nicht.
So sieht mein Code jetzt aus geht aber immer noch nicht.
PHP-Code:
<?php
function add_category_automatically($post_ID) {
    global 
$wpdb;

    if((
wp_is_post_revision$post_ID ) )&&( is_singular'css' ) )) {
    
$myCategory = array (80);
    
wp_set_post_categories$post_ID $myCategory );
    
//wp_set_object_terms( $post_ID, $myCategory , 'category');
    
}
}
add_action('save_post''add_category_automatically');
 
?>
Mit Zitat antworten
  #5 (permalink)  
Alt 03.02.2014, 10:57
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Zu erst einmal die Rüge: sowas hat NICHTS in der functions.php verloren! Lagere es in ein Plugin aus!

Und jetzt muss ich noch mal fragen, was genau du erreichen möchtest:
Willst Du eine Taxonomie für einen bestimmten Post-Type registrieren? Oder soll jeder Post eines Post-Types einen bestimmten Term dieser Taxonomie zugeordnet bekommen?

Der Code ist absolut unlogisch. Wieso soll eine Revision einen Term zugeordnet bekommen?
is_singular() ist ein Template-Tag, ist also auf save_post i.d.R. unbrauchbar da du dich dort normalerweise nicht in einem Template-Kontext befindest.
__________________
github | http://dnaber.de

Geändert von David (03.02.2014 um 11:02 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 03.02.2014, 12:01
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Hi David,
ich bin mir nicht sicher was ich überhaupt machen muss.
Also ich habe mir einen Custom Post Type erstellt.
PHP-Code:
 <?php
register_post_type
('css',
array(    
'label' => 'Beiträge CSS'
        
,'description' => 'Beiträge zu CSS'
        
,'public' => true
        
,'show_ui' => true
        
,'show_in_menu' => true
        
,'capability_type' => 'post'
        
,'hierarchical' => false
        
,'rewrite' => array('slug' => '')
                            ,
'query_var' => true
                            
,'exclude_from_search' => false
                            
,'supports' => array('title'
                                                
,'editor'
                                                
,'excerpt'
                                                
,'trackbacks'
                                                
,'custom-fields'
                                                
,'comments'
                                                
,'revisions'
                                                
,'thumbnail'
                                                
,'author'
                                                
,'page-attributes'
                                                
,)

                          ,
'labels' => array ('name' => 'Beiträge CSS',
                                              
'singular_name' => 'CSS Beiträge',
                                              
'menu_name' => 'CSS Beiträge',
                                              
'add_new' => 'Neuen CSS Beitrag',
                                              
'add_new_item' => 'Neuen CSS Beitrag',
                                              
'edit' => 'Edit',
                                              
'edit_item' => 'Edit CSS Beitrag',
                                              
'new_item' => 'Neue CSS Beiträge',
                                              
'view' => 'View Beiträge CSS',
                                              
'view_item' => 'View Beiträge CSS',
                                              
'search_items' => 'Suche CSS Beiträge',
                                              
'not_found' => 'Keine CSS Beiträge gefunden',
                                              
'not_found_in_trash' => 'Keine CSS Beiträge in Papierkorb',
                                              
'parent' => 'Parent CSS Beiträge'
                                            
,)
                          ,)
        );
  
?>
In den Beiträgen habe ich unter Kategorien die Category CSS (slug=css)
und die Taxonomie dazu ist so:
PHP-Code:
<?php
register_taxonomy
('css',array (
  
=> 'css',
),array( 
'hierarchical' => true'label' => 'CSS','show_ui' => true,'query_var' => true,'rewrite' => array('slug' => 'css'),'singular_label' => 'Beiträge CSS') );
?>
Mein Problem ist jetzt so, dass alle CSS Beiträge automatisch die Kategorie CSS zugeordnet bekommen. Darum geht es in diesen Post.
Grüße
Mit Zitat antworten
  #7 (permalink)  
Alt 03.02.2014, 14:52
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Du solltest zuerst die Slugs für Taxonomie und Post-Typ ändern. Gleiche Slugs hab ich zwar noch nie probiert, könnte aber bei den Rewrite-Rules oder Query-Vars zu kollisionen führen. Also css für den Post-Typ und css_category für die Taxonomie.

Dann noch mal zur Terminologie: Eine Taxonomie (z.B. »Kategorie«) kann nicht zugeordnet werden. Ein Term einer Taxonomie kann einem Beitrag zugeordnet werden.

In deiner Taxonomie »CSS« musst du also erstmal einen Term »CSS« anlegen, der dann einem Post aus deinem Post-Type »CSS« zugewiesen werden kann.

Schon an der Wahl der Bezeichnungen erscheint mir dass keine sonderlich sinnvolle wahl der Datenstruktur zu sein, aber sei's drum.

Um irgendein Term irgendeiner Taxonomie automatisch zuzuweisen musst Du zuerst sagen, ob das immer geschenen soll (der Nutzer also keien Möglichkeit hat, diese Zuweisung zu lösen) oder nur einmalig beim Veröffentlichen?

In ersterem Fall würde der save_post Hook als einstiegspunkt genügen:
PHP-Code:
<?php

add_action
'save_post''xf_70591_set_post_term' );
/**
 * apply a special term to all posts of 'css'
 *
 * @param int $post_ID
 * @return void
 */
function xf_70591_set_post_term$post_ID ) {
    
    
$taxonomy  'css';
    
$term_slug 'css';
    
$post_type 'css';
    
    
# check the correct post type
    
if ( $post_type != get_post_type$post_ID ) ) 
        return;
    
# check if taxonomy and post-type are related 
    
$valid_taxonomies get_object_taxonomies$post_type );
    if ( ! 
is_array$valid_taxonomies ) || ! in_array$taxonomy$valid_taxonomies ) )
        return;
    
    
$term get_term_by'slug'$term_slug$taxonomy );
    if ( ! 
$term )
        return;
    
    if ( 
has_term$term->slug$taxonomy$post_ID ) )
        return;
    
    
$term_ID = (int) $term->term_id;
    
    
# link the term to the post
    
wp_set_post_terms$post_ID, array( $term_ID ), $taxonomyTRUE );
}
__________________
github | http://dnaber.de

Geändert von David (03.02.2014 um 14:55 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 04.02.2014, 14:44
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Hi David, entschuldige, dass ich erst Heute antworte.
Es funktioniert nicht. Auf den Seiten lasse ich das Arrary ausgeben.
Hier alles ok!
Cascading Style Sheets | Bad Langensalza
Hier leeres Array!
Scriptly: Bilder horizontal und vertikal zentrieren | Bad Langensalza
Ich habe mir mal mit var_dump() die einzelnen Werte anzeigen lassen.
Bei if ( ! $term ) fliege ich schon raus.

PHP-Code:
  $term get_term_by'slug'$term_slug$taxonomy );
   
//var_dump($term);        #bool(false)
   
if ( ! $term )
        return;
  
//  var_dump(has_term( $term->slug, $taxonomy, $post_ID ));  #bool(true)
    
if ( has_term$term->slug$taxonomy$post_ID ) )
        return; 
Grüße
Mit Zitat antworten
  #9 (permalink)  
Alt 04.02.2014, 16:11
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Dann existiert der Term offenbar nicht. Versuche den Code zu verstehen, den ich vorgeschlagen habe. Ich habe ihn nicht getestet!

In dem dump deiner Terms ist im Übrigen von einer Taxonmoie "css" nichts zu sehen. Das sind alles Terms der Taxonomie "category", als umgangssprachlich »Kategorien«.

Klären wir doch zunächst mal die Frage um welche Taxonomie es nun geht: "category" oder "css"?
__________________
github | http://dnaber.de
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 04.02.2014, 17:03
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Zitat:
Zitat von David Beitrag anzeigen
Klären wir doch zunächst mal die Frage um welche Taxonomie es nun geht: "category" oder "css"?
Es soll um "category" gehen.
Des halb hatte ich ursprünglich auch keine Taxonomie "css" registriert.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Responsive webdesign: horizontales Menü mit angepasster Schriftgröße Spencer Javascript & Ajax 3 18.09.2012 23:16
joomla template wrock CSS 2 06.04.2012 19:24
IE7 Breitenproblem / Anzeige zu schmal (<div>)? hoi3008 CSS 19 10.02.2011 17:39
z-index hoch, dennoch grafik nicht ganz oben bergg CSS 6 27.10.2010 16:02
rätselhafter Leerraum zwischen Content und Footer im IE jhonnybravo CSS 5 04.03.2010 11:47


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:07 Uhr.