Posts Tagged with wordpress

posted by qubix on November 12, 2014

Κι όμως..ακόμη και ένας απλός χρήστης όταν κάνει login μπορεί να δει την admin bar πάνω πάνω. Θα μου πείτε ε και; Ε και αν ο τάδε πελάτης το θεωρεί απαράδεκτο, οτι μπερδεύει τους χρήστες μπλα μπλα, πριν αρχίσετε να τραβάτε τα μαλλιά σας, είναι πιο εύκολο να κάνετε στα γρήγορα αυτό που ζητά και να είναι και αυτός ευτυχισμένος και εσείς ήρεμοι άνθρωποι!

Ο Παρακάτω κώδικας πετυχαίνει αυτό που θέλουμε και μπαίνει στο function.php του theme που χρησιμοποιείτε:

 
/* gdimi remove admin bar except for admins */
add_action('after_setup_theme', 'remove_admin_bar');
//
function remove_admin_bar() {
    if (!current_user_can('administrator') && !is_admin()) {
      show_admin_bar(false);
    }
}
 

posted by qubix on November 12, 2014

Υπάρχουν μερικές περιπτώσεις όπου είναι χρήσιμο όταν κάνουν login οι χρήστες να τους κάνουμε redirect στην αρχική σελίδα και όχι αυτόματα να πηγαίνουν στο "admin" περιβάλλον.

Αυτό γίνεται πολύ εύκολα βάζοντας τον παρακάτω κώδικα στο functions.php του theme που χρησιμοποιούμε.

 
/**
 * Redirect non-admins to the homepage after logging into the site.
 * gdimi
 */
function gdimi_login_redirect( $redirect_to, $request, $user  ) {
    return ( is_array( $user->roles ) && in_array( 'administrator', $user->roles ) ) ? admin_url() : site_url();
} // end login_redirect
add_filter( 'login_redirect', 'gdimi_login_redirect', 10, 3 );
 

posted by qubix on April 18, 2014

Λοιπόν, φτάνει κάποια στιμγή η ώρα που θέλουμε να δούμε τι δεν πάει καλά με τα 1241234 plugins που έχουμε βάλει και κάπου σπάει το wordpress που έχουμε φτιάξει ή ίσως για να κάνουμε debug κάποιο δικό μας plugin.

Εκτός από τα κλασσικά logs του apache (ή όποιου http server), υπάρχει ένα πολύ χρήσιμο plugin, το debug bar!To εν λόγω plugin βάζει μια μπάρα με διάφορα στοιχεία όπως php debug errors, memory usage, cache κλπ κλπ. Αν θέλουμε να δούμε και περισσότερα πράγματα υπάρχουν αρκετά plugins του..plugin όπως το Debug Bar Actions and Filters Addon που προσθέτει δύο επιλογές για να βλέπουμε τι actions/filters κλήθηκαν στην σελίδα που είμαστε και φυσικά προϋποθέτει την ύπαρξη του debug bar που προείπα.

Το κατεβάζουμε και κάνουμε install με τον κλασσικό τρόπο και φροντίζουμε στο wp-config.php να έχουμε τα

 
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false); 
 

ώστε να ενεργοποιήσουμε το debug του wordpress για να βλέπουμε τα php warnings/errors, να τα κρατά σε ένα log (wp-content/debug.log) και να μην τα δείχνει ώστε να μην βλέπουμε ένα τεράστιο κατεβατό αλλά να τα κοιτάμε από το debug bar.

Happy debuggin' !

posted by qubix on March 15, 2014

Λοιπόν..μόλις βάλαμε το ωραίο μας theme και διαπιστώνουμε πως έχει κάνει register ένα menu το οποίο δεν είναι πουθενά στο admin panel και φυσικά δεν υπάρχει καμία page 'Home'..πριν πάθουμε εγκεφαλικό, ας πούμε λίγο πως ένα theme δημιουργεί ένα menu από το πουθενά.

Κάπου λοιπόν στον φάκελο του εκάστοτε theme έχει κάποιο αρχείο header.php ή κάπως έτσι.
Μέσα στο αρχείο θα βρείτε ένα κομμάτι κώδικα σαν τον παρακάτω


wp_nav_menu( array(
    'theme_location' => 'header-menu',
    'container'      => false,
    'menu_class'     => 'menu horizontal-menu header-menu',
    'menu_id'        => 'header-menu',
    'items_wrap'     => '
%3$s') );

Ο παραπάνω κώδικας χρησιμοποιεί μια function του wordpress framework ώστε να πει πως ένα μενού, το header-menu, έχει τα παρακάτω χαρακτηριστικά που περιγράφει.
Το ερώτημα είναι πως ακριβώς και το σημαντικότερο, που ορίζει το theme πως θέλει το μενού και ποια στοιχεία έχει;
Ο κώδικας που ψάχνουμε είναι κάτι σαν το παρακάτω:


    register_nav_menus( array(
        'header-menu'  => __( 'Header Menu', 'decode' ),
        'sidebar-menu' => __( 'Sidebar Menu', 'decode' ),
        'footer-menu' => __( 'Footer Menu', 'decode' )
    ) );


Το παραπάνω είναι πιθανό να το βρείτε σε κάποιο αρχείο functions.php και όπως βλέπουμε λέει στο wordpress να αναγνωρίζει όχι ένα, αλλά τρία μενού.

Και πάλι όμως δεν έχουμε ιδέα τι γίνεται με τα στοιχεία του μενού...

Δυστυχώς κάπου τώρα θα πρέπει να υπάρχει κάτι σαν το παρακάτω:
function _page_menu_args( $args ) {
    $args['show_home'] = true;
    return $args;
}


Όπου το βρείτε λοιπόν, αρκεί να αλλάξετε το "true" σε ότι θέλετε πχ Αρχική, Σπιτάκι οτιδήποτε και θα αλλάξει και στο menu που βλέπετε!

posted by qubix on December 22, 2013

Πρόσφατα αντιμετώπισα το εξής πρόβλημα:

Σε μια εγκατάσταση wordpress 3.5 με την next gen gallery 1.9.1.2, όταν ενεργοποίησα τα permalinks, σταμάτησαν να δουλεύουν το paginations και το slideshow στις galleries που είχα φτιάξει..

Μετά από λίγο ψάξιμο είδα πως η nggallery έψαχνε να βρει τις get variables "nggpage" και "show" με την function get_query_var του wordpress. Για κάποιον άγνωστο λόγω, οι εν λόγω variables δεν υπήρχαν στη λίστα του wordpress (η get_query_var ψάχνει σε μια λίστα γνωστών variables του wordpess.

Αφού απέκλεισα να φταίνε ρυθμίσεις security ή cache, κατέληξα στο συμπέρασμα πως είτε το wordpress το ίδιο δεν καταλάβαινε τι του έλεγε η nggallery, είτε έφταιγε η nggallery η ίδια..

Τελικά αποφάσισα να κάνω λίγο modification στον κώδικα του nggfunctions.php:

Γραμμή 176 λοιπόν προσθέτουμε:

   
    if (!$show) {
        if ($_GET['show'] == 'slide') {
            $show = 'slide';
        }
    }
   

και γραμμή 260:

  
    if (!$nggpage) {
        $nggpage = (int)$_GET['nggpage'];
    }
   

έτσι λοιπόν τώρα οι variables έχουν την τιμή που χρειάζεται όταν χρειάζεται!

hyperworks