1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm Hiểu về Wordpress - part 17 pot

10 268 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 1,09 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

5.3.5 Example #2: Sitewide Shortcode Functionality In short, WordPress shortcodes are shortcuts for frequently used content such as links, images, and titles.. Place this function in you

Trang 1

And that’s all there is to it! Depending on placement of the function call, your

comments area should now feature quick and easy “spam” and “delete” buttons

next to each individual comment Even better, this improved function is

version-independent, backwards-compatible, and thus will work for any version of

WordPress

5.3.5 Example #2: Sitewide Shortcode Functionality

In short, WordPress shortcodes are shortcuts for frequently used content such as

links, images, and titles As you blog, instead of writing out the entire link to your

homepage, for example, shortcodes enable you to simply write “[home]” anywhere

you would like the link to appear

Of course, more complex shortcodes are possible, including shortcodes that include

varying attributes This functionality is made possible thanks to a set of functions

called the Shortcode API that was introduced in WordPress 2.5 When a shortcode

is encountered, it is processed by the WordPress API and its associated functionality

is executed

The easiest way to implement shortcode functionality is to specify your shortcodes

via the functions.php file Here is a PHP function that will convert the [home]

shortcode into a link to your site’s homepage:

Trang 2

When you are building a theme, and the circumstance comes up

where you need to create a link to a specific page hard-baked

right into the theme, there is a function you should be using.

Not great

<a href="/contact/">Contact</a>

Much better

<a href="<?php echo get_permalink(12); ?>">Contact</a>

That “12” would be the ID of the Post or Page Why is

this better?

• If the slug ever changes, you are still cool.

• If the site moves from a sub directory (like if you were

developing and then moving) to a top level domain or vice

versa, you are still cool.

Doing it this way is a permanent reference to that Post or

Page that will always be correct This works great when we are

working within our theme files, but what about when we are

working within WordPress and actually writing Posts and Pages?

By default, we can’t run PHP within the content of our Posts

and Pages*, so we can’t use the get_permalink function What

we can do, is create a shortcode with just about the

same functionality.

function permalink_thingy($atts) { extract(shortcode_atts(array(

'id' => 1, 'text' => "" // default value if none supplied ), $atts));

if ($text) {

$url = get_permalink($id);

return "<a href='$url'>$text</a>";

} else {

return get_permalink($id);

} }

add_shortcode('permalink', 'permalink_thingy');

This shortcode can be used in two ways:

Basic

<a href="[permalink id=49]">Using without providing text</a> Provide only the ID parameter and it only returns a URL This way you can use that URL however you want For example, if you needed to add a special class name to the link or something (but only occasionally).

Providing text

[permalink id=49 text='providing text']

Easy Shortcode Permalinks

Trang 3

<?php // shortcode for homepage link

function myHomePage() {

return '<a href="http://domain.tld/"

title="My Website Homepage">My Homepage</a>';

}

add_shortcode('home', 'myHomePage');

?>

Place this function in your theme’s functions.php file, and then call the function

by using the shortcode Simply write “[home]” anywhere in your blog post and

WordPress will run the myHomePage function and display the link to your

homepage

5.3.6 Example #3: Transferring Plugins to functions.php

As we have seen in the previous two examples, the functions.php file is perfect for

extending the functionality of WordPress In addition to these types of functions,

we can also move entire plugins into the functions.php file

One reason for doing this involves isolating the plugin’s functionality to a specific

theme Plugin functionality affects all themes, whereas a functions.php file will

only affect its associated theme

Transferring the contents of most plugins is as simple as copying and pasting

the contents into the functions.php file Some plugins may require additional

modifications to work properly when relocated to the functions.php

Trang 4

5.3.7 Example #4: Transferring Functions to a Plugin

Just as it is easy to transfer a plugin to a functions.php, it is also easy to create a plugin from any functions.php function For either of the two example functions given above, we would simply copy and paste the contents into an empty PHP file (named anything you like) and activate via the WordPress Admin area

Before uploading to the server, we need to specify the plugin details at the beginning of the plugin file There are several pieces of information that are required, as seen in this example for a plugin based on our shortcode functionality:

<?php /*

Plugin Name: Easy Admin Buttons for Comments Plugin URI: http://digwp.com/

Description: Provides easy comment moderation links.

Version: 1.0 Author: Digging into WordPress Author URI: http://digwp.com/

*/

?>

After placing this code at the beginning of the plugin file, edit the information appropriate to your plugin and you’re good to go Generally we would prefer to place simple functions in the functions.php file, but implementing them in plugin format does have its benefits, including the ability to affect functionality across multiple themes

These examples and techniques are just the tip of the iceberg when it comes to the wide range of functionality that may be implemented via your theme’s

functions.php file

Trang 5

5.4.1 Other Ways to Extend

WordPress Functionality

So far we have explored the two most common ways of extending WordPress

functionality, namely, plugins and the functions.php file In addition to these

methods, you may also implement custom functionality directly within your theme

template files

5.4.2 Functions Within Theme Files

As discussed in the Themes Chapter of this book, theme template files contain

numerous template tags, PHP scripts, and (X)HTML markup Within these files,

designers and developers may place just about any custom functionality they wish

For example, the previous functions.php example for “Easy Admin Buttons” could

be placed directly within the theme file instead Within the comment loop, we

could add the script as follows:

<p><?php comment_author_link(); ?><p>

<p><?php if (current_user_can('edit_post')) {

echo '<a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php

?action=cdc&c='.comment_ID().'">Delete</a>';

echo ' | <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php

?action=cdc&dt=spam&c='.comment_ID().'">Spam</a>';

} ?></p>

<?php comment_text(); ?>

Trang 6

This setup will output the following markup, which will vary depending on the actual content of your site:

<p><a href='http://domain.tld/' rel='external nofollow'>Author</a></p>

<p><a href="http://domain.tld/wp-admin/comment.php

?action=cdc&c=123">Delete</a> | <a href="http://domain.tld/wp-admin/

comment.php?action=cdc&dt=spam&c=123">Spam</a></p>

<p>Hello, thanks for this article, it is exactly what I needed!</p>

The key to placing functions directly in your theme template files involves removing the function declaration from the function itself

Of course, this is just one example of a custom function that works well when integrated directly into a theme template file Another great example of this involves just about any sort of custom loop functionality The WordPress loop is the core component of many theme files Integrating custom loop functionality directly into the loop itself is easier and simpler than trying to separate customizations into a plugin or functions.php file In other situations, it makes more sense to keep snippets of custom functionality in theme files, if for no other reason than to keep your templates clear and easy to understand

5.4.3 Hacking the WordPress Core

And of course, last and certainly least, we arrive at the “forbidden” method of

extending WordPress, which is more accurately described as modifying default

Trang 7

While some WordPress heads will argue that you should absolutely, positively

never hack a core WordPress file on any occasion or for any reason whatsoever and

forever and ever and ever, the truth is that there are some cases where getting

the job done is more important than following ideals and best practices When

functional goals cannot be met with existing plugins and scripts, a solution may be

found in the editing of the WordPress core

“What!?” I hear some purists freaking out right now, screaming loudly and shaking

their fists in opposition, “this is blasphemy against the WordPress gods!” But if

you think about it, there really is nothing sacred about the WordPress core The

usual arguments against editing core files revolve mostly around the concept of

maintainability WordPress is continually updated with patches, fixes, and new

versions Thus, having a bunch of core edits to worry about reduces the ease of

which these updates are applied to your site, or so the thinking goes

Regardless of the debate, there may be situations where you have no choice but

to hack a few lines of core code to do the job So, rather than pretend that people

don’t do it, here are some tips for when you find yourself doing the “evil” deed:

Super-Easy Post-Thumbnails

Surfing the Web, you will notice that many blogs include a thumbnail image for each post For example, at DigWP.com, we attach a thumbnail to every post to help improve the user-experience for visitors Before

WordPress version 2.9, including these post-thumbnails required use of custom-fields, but now with 2.9

and better, WordPress features a much easier way of doing it To get started with post thumbnails, add the following line of code to your theme’s functions.php file:

if (function_exists('add_theme_support')) { add_theme_support('post-thumbnails'); }

With that code in place, go to write or edit a post as usual in the Admin, and click on the “Set Thumbnail” link in the “Post Thumbnail” panel From there, select and tag your image from within the Media Library

Then, to display your post thumbnails in your theme, add the following template tag within the loop:

<?php has_post_thumbnail(); ?> There is much more that can be done with WordPress' post-thumbnail feature To learn

Trang 8

• Don’t hack the core unless you have absolutely no other option

• Do your research and understand exactly what you are doing

• Create a “read-me-before-updating” text file that details the changes

Bottom line: Before hacking the core, do your research, know what you are

doing, and make absolutely certain that no other options exist Also, take good notes and refer to them before every future WordPress upgrade You never know,

you may actually learn something new from digging around under the hood!

5.5.1 WordPress as a Content Management System (CMS)

As we have seen, the possibilities for extending WordPress functionality are virtually endless What began as a humble blogging platform called b2/cafelog way back in 2001 is now robust and flexible enough to serve as a highly customizable Content Management System (CMS)

One of the main distinctions between a CMS and a simple blog involves the flexibility of the underlying software and its ability to create and manage multiple users and various types of digital media, which may include everything from text and images to audio and video content

5.5.2 CMS Features Built Into WordPress

Out of the box, WordPress provides many features that help any number of users

Update: WordPress 3.0

Check out Chapter 12 to learn

about all of the new

CMS-related functionality that is

now included with WordPress.

Trang 9

5.5.3 Working With Custom Fields

Perhaps the most powerful CMS-enabling feature included with WordPress is found

in its robust custom-fields functionality WordPress Custom Fields enable users to

associate additional custom content and information with each Post To better

understand how Custom Fields work, let’s consider a scenario where you would

like to associate thumbnail images with your posts You could include the image

information along with the post text

But this setup would force you to display the thumbnail along

with the post, in the exact order that it appears in the post

content If you wanted to display the thumbnail outside of

the post, say in the sidebar, how would you go about it? Easy

Custom Fields to the rescue

By setting a custom field key named “thumbnail” with

a corresponding value of “http://domain.tld/images/

thumbnail-01.jpg”, we have associated the thumbnail

with our post in such a way that will enable us to display it

anywhere on the page

With the custom fields added to our posts, we are now ready to tap into some core

WordPress functionality and display our custom post-images in the desired fashion

The function we will be using to retrieve the custom images is get_post_meta(),

which is a native WordPress function designed to retrieve specific custom-field key

values The get_post_meta() function takes the following three parameters:

$post_id - defines the post from which the custom-field

data is called

$key - defines the key of the desired custom-field meta

value

$single - specifies whether to return the data as a string or

as an array

Good

Using custom fields for post thumbnails is the way to go.

Bad

Putting post thumbnails in the content itself isn’t very flexible.

Trang 10

Plugged into the get_post_meta() function, these parameters look like this:

<?php get_post_meta($post_id, '$key', $single); ?>

To specify the ID parameter, $post_id, for each post, we use “$post->ID”, which requires the function to be placed within the loop For the $key parameter, we will use the name of the target key, which in this case is “thumbnail” And finally, because we want the key value returned as a string, we use “true” for the $single

parameter At this point our get_post_meta() function looks like this:

<?php get_post_meta($post->ID, 'thumbnail', true); ?>

And we are almost there As is, this code will simply return the custom-field value without printing it to the web page So, we make one final edit to “echo” the data

to appear in the browser:

<?php echo get_post_meta($post->ID, 'thumbnail', true); ?>

When placed in the loop, this function will output each post’s “thumbnail” custom-field value, which at this point is simply a URL to the specific thumbnail image For example:

http://domain.tld/path/custom-01.png

Not very useful for your visitors, however, by enclosing our function with a little markup, we can easily transform that URL into an actual image that links to its corresponding post:

Ngày đăng: 04/07/2014, 21:20

TỪ KHÓA LIÊN QUAN

w