30 |
31 |
32 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | Pears are common patterns of markup & style.
2 |
3 | Pears is an open source WordPress theme. I'll admit the code
4 | is a bit rough, initially based on the default 'twentyone' theme.
5 |
6 | I wanted a handy way of collecting HTML & CSS pattern pairs.
7 | Often used modules with a minimal of style applied. It's become
8 | a valuable learning tool, whereby breaking interfaces down into
9 | small pieces make it easier to learn and improve running code.
10 |
11 | HOW TO ADD CODE PATTERNS
12 |
13 | - Each pattern is a post in WordPress.
14 | - Add markup in a custom field named 'html'.
15 | - Add style in a custom field named 'css'.
16 | - Use the main content field for optional notes.
17 |
18 | Learn more and see it in action here:
19 | http://pea.rs
20 |
21 | Enjoy.
22 |
23 | Dan Cederholm
24 | Salem, Massachusetts
25 | February, 2012
26 | http://simplebits.com
27 |
--------------------------------------------------------------------------------
/page.php:
--------------------------------------------------------------------------------
1 |
16 |
17 |
';
22 |
23 | /* Run the loop for the category page to output the posts.
24 | * If you want to overload this in a child theme then include a file
25 | * called loop-category.php and that will be used instead.
26 | */
27 | get_template_part( 'loop', 'category' );
28 | ?>
29 |
30 |
181 |
182 |
--------------------------------------------------------------------------------
/css/screen.less:
--------------------------------------------------------------------------------
1 | /*
2 | Title: Master styles for screen media
3 | Author: dan@simplebits.com
4 | */
5 |
6 | /* LESS variables
7 | --------------------------------------------- */
8 |
9 | @text-color: #3e4549;
10 | @link-color: #2790ae;
11 | @link-hover-color: #0f6780;
12 |
13 | @font-mono: Monaco, monospace;
14 | @font-small: 12px;
15 | @font-medium: 13px;
16 | @font-large: 18px;
17 |
18 | /* LESS mixins
19 | --------------------------------------------- */
20 |
21 | .rounded (@radius: 6px) {
22 | -webkit-border-radius: @radius;
23 | -moz-border-radius: @radius;
24 | border-radius: @radius;
25 | }
26 | .box-shadow (@x: 0, @y: 0, @blur: 2px, @color: #000) {
27 | -webkit-box-shadow: @arguments;
28 | -moz-box-shadow: @arguments;
29 | box-shadow: @arguments;
30 | }
31 | .box-sizing (@type: border-box) {
32 | -webkit-box-sizing: @type;
33 | -moz-box-sizing: @type;
34 | -o-box-sizing: @type;
35 | box-sizing: @type;
36 | }
37 | .transition (@property, @duration: .2s, @timing: ease-in-out) {
38 | -webkit-transition: @arguments;
39 | -moz-transition: @arguments;
40 | -o-transition: @arguments;
41 | transition: @arguments;
42 | }
43 | .tab-size (@spaces: 2) {
44 | -webkit-tab-size: @spaces;
45 | -moz-tab-size: @spaces;
46 | -o-tab-size: @spaces;
47 | tab-size: @spaces;
48 | }
49 |
50 | /* reset styles
51 | --------------------------------------------- */
52 |
53 | html, body, div, span, applet, object, iframe,
54 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
55 | a, abbr, acronym, address, big, cite, code,
56 | del, dfn, em, img, ins, kbd, q, s, samp,
57 | small, strike, strong, sub, sup, tt, var,
58 | b, u, i, center,
59 | dl, dt, dd, ol, ul, li,
60 | fieldset, form, label, legend,
61 | table, caption, tbody, tfoot, thead, tr, th, td,
62 | article, aside, canvas, details, embed,
63 | figure, figcaption, footer, header, hgroup,
64 | menu, nav, output, ruby, section, summary,
65 | time, mark, audio, video {
66 | margin: 0;
67 | padding: 0;
68 | border: 0;
69 | font-size: 100%;
70 | vertical-align: baseline;
71 | }
72 |
73 | /* HTML5 display-role reset for older browsers */
74 | article, aside, details, figcaption, figure,
75 | footer, header, hgroup, menu, nav, section {
76 | display: block;
77 | }
78 | body {
79 | line-height: 1;
80 | }
81 | ol, ul {
82 | list-style: none;
83 | }
84 | blockquote, q {
85 | quotes: none;
86 | }
87 | blockquote:before, blockquote:after,
88 | q:before, q:after {
89 | content: '';
90 | content: none;
91 | }
92 | table {
93 | border-collapse: collapse;
94 | border-spacing: 0;
95 | }
96 | :focus {
97 | outline: none;
98 | }
99 |
100 | /* general styles
101 | --------------------------------------------- */
102 |
103 | body {
104 | padding: 0 0 15px 0;
105 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
106 | color: @text-color;
107 | font-size: 100%;
108 | background: #e6eaec url(../images/tile.png);
109 | }
110 |
111 | /* links */
112 |
113 | a:link, a:visited {
114 | color: @link-color;
115 | text-decoration: none;
116 | outline: none;
117 | }
118 | a:hover {
119 | color: @link-hover-color;
120 | }
121 |
122 | /* page structure
123 | --------------------------------------------- */
124 |
125 | div.wrap {
126 | position: relative;
127 | }
128 | div.main {
129 | margin-left: 160px;
130 | padding: 0 20px;
131 | .transition(margin, .4s, ease-in-out);
132 | }
133 | body.expanded div.main {
134 | margin-left: 15px;
135 | }
136 | #nav {
137 | font-size: @font-small;
138 | .box-sizing(border-box);
139 | }
140 | #pears-footer {
141 | margin: 10px 20px;
142 | text-align: center;
143 | }
144 |
145 | /* header
146 | --------------------------------------------- */
147 |
148 | header[role="banner"] {
149 | margin: 15px 20px 15px 20px;
150 | .transition(margin, .4s, ease-in-out);
151 | }
152 | body.expanded header[role="banner"] {
153 | margin-left: 35px;
154 | }
155 | #logo {
156 | display: block;
157 | min-height: 46px;
158 | padding: 0 0 0 40px;
159 | font-size: 25px;
160 | line-height: 46px;
161 | white-space: nowrap;
162 | color: @text-color;
163 | background: url(../images/pear.png) no-repeat 0 50%;
164 | overflow: hidden;
165 | }
166 | #logo em {
167 | padding: 0 0 0 0;
168 | font-style: normal;
169 | color: #91969a;
170 | .transition(opacity, .4s, ease);
171 | }
172 |
173 | /* main styles
174 | --------------------------------------------- */
175 |
176 | div.mod {
177 | margin: 0 0 20px 0;
178 | padding: 20px;
179 | background: #fff;
180 | .rounded;
181 | .box-sizing(border-box);
182 | .box-shadow(1px, 1px, 2px, rgba(0,0,0,.1));
183 | }
184 | div.mod h3.label {
185 | float: left;
186 | margin: 0 0 10px -20px;
187 | padding: 6px 10px;
188 | font-size: @font-small;
189 | font-weight: normal;
190 | letter-spacing: 1px;
191 | text-transform: uppercase;
192 | color: #fff;
193 | background: #a1cf32;
194 | .rounded(4px);
195 | border-top-left-radius: 0;
196 | border-bottom-left-radius: 0;
197 | }
198 | div.mod h3.label a {
199 | color: #fff;
200 | }
201 | div.mod h4 {
202 | float: left;
203 | width: 50%;
204 | padding: 2px 15px;
205 | font-size: @font-large;
206 | font-weight: normal;
207 | }
208 | div.mod h4 span.sep {
209 | color: #bbb;
210 | }
211 | div.mod a.clip {
212 | float: left;
213 | margin: 2px 0 0 10px;
214 | opacity: 0;
215 | .transition(opacity);
216 | }
217 | div.mod:hover a.clip {
218 | opacity: .7;
219 | }
220 | div.mod:hover a.clip:hover {
221 | opacity: 1;
222 | }
223 | div#pattern.mod div#pattern-wrap {
224 | clear: left;
225 | padding: 20px 60px;
226 | }
227 | div#markup.mod {
228 | float: left;
229 | width: 49%;
230 | background: rgba(255,255,255,.6);
231 | }
232 | div#style.mod {
233 | float: right;
234 | width: 49%;
235 | background: rgba(255,255,255,.6);
236 | }
237 | div.mod textarea.mod-ta {
238 | width: 100%;
239 | border: none;
240 | height: 500px;
241 | font-family: @font-mono;
242 | font-size: @font-small;
243 | line-height: 1.4;
244 | white-space: pre;
245 | color: @text-color;
246 | background: none;
247 | outline: none;
248 | .tab-size;
249 | }
250 |
251 | /* pattern notes */
252 |
253 | #pattern-notes h3.label {
254 | background: #bac1c5;
255 | }
256 | #pattern-notes p {
257 | clear: left;
258 | line-height: 1.4;
259 | color: #8b959a;
260 | }
261 | #pattern-notes code {
262 | font-family: @font-mono;
263 | font-size: @font-medium;
264 | }
265 | #pattern-notes pre {
266 | display: block;
267 | margin: 12px 0 0 0;
268 | padding: 15px 0 0 0;
269 | font-family: @font-mono;
270 | font-size: @font-small;
271 | line-height: 1.4;
272 | white-space: pre;
273 | color: @text-color;
274 | border-top: 1px solid #ddd;
275 | }
276 |
277 | /* nav styles
278 | --------------------------------------------- */
279 |
280 | #nav {
281 | position: absolute;
282 | top: 0;
283 | left: 0;
284 | width: 160px;
285 | margin: 0 0 15px 0;
286 | padding: 20px 0;
287 | background: #575d60;
288 | .rounded;
289 | border-top-left-radius: 0;
290 | border-bottom-left-radius: 0;
291 | -webkit-transition: left .4s ease-in-out;
292 | -moz-transition: left .4s ease-in-out;
293 | -o-transition: left .4s ease-in-out;
294 | transition: left .4s ease-in-out;
295 | }
296 | body.expanded #nav {
297 | left: -140px;
298 | }
299 | #nav-toggle {
300 | position: absolute;
301 | display: block;
302 | top: 0;
303 | right: 0;
304 | width: 20px;
305 | height: 100%;
306 | text-indent: -9999px;
307 | background: url(../images/min.png) no-repeat 6px 50%;
308 | opacity: .3;
309 | }
310 | #nav-toggle:hover {
311 | background-color: rgba(255,255,255,.15);
312 | opacity: .6;
313 | }
314 | body.expanded #nav-toggle {
315 | background-image: url(../images/max.png);
316 | }
317 | #nav h2 {
318 | margin: 0 20px 4px 20px;
319 | font-size: @font-small;
320 | font-weight: normal;
321 | text-transform: uppercase;
322 | letter-spacing: 2px;
323 | }
324 | #nav h2 a {
325 | color: #fff;
326 | }
327 | #nav ul {
328 | margin: 0 20px 15px 0;
329 | padding: 0 0 10px 0;
330 | border-bottom: 1px solid rgba(255,255,255,.1);
331 | }
332 | #nav div.nav-item:hover ul {
333 | display: block;
334 | }
335 | #nav ul:last-of-type {
336 | margin-bottom: 0;
337 | padding-bottom: 0;
338 | border-bottom: none;
339 | }
340 | #nav ul li a {
341 | display: block;
342 | padding: 5px 8px 5px 20px;
343 | color: rgba(255,255,255,.5);
344 | background: transparent;
345 | .rounded(4px);
346 | border-top-left-radius: 0;
347 | border-bottom-left-radius: 0;
348 | }
349 | #nav ul li a:hover {
350 | color: rgba(255,255,255,.8);
351 | background: rgba(255,255,255,.1);
352 | }
353 |
354 | /* footer
355 | --------------------------------------------- */
356 |
357 | #pears-footer p.cc {
358 | margin: 8px 0 20px 0;
359 | font-size: @font-medium;
360 | }
361 | #pears-footer #sb img {
362 | opacity: .3;
363 | .transition(opacity);
364 | }
365 | #pears-footer #sb:hover img {
366 | opacity: .5;
367 | }
368 |
369 | /* misc.
370 | --------------------------------------------- */
371 |
372 | hr, .hide {
373 | display: none;
374 | }
375 | a img {
376 | border: none;
377 | }
378 |
379 | /* custom selection colors */
380 |
381 | ::-moz-selection {
382 | color: #fff;
383 | color: rgba(255,255,255,.85);
384 | background: #a1cf32;
385 | }
386 | ::selection {
387 | color: #fff;
388 | color: rgba(255,255,255,.85);
389 | background: #a1cf32;
390 | }
391 |
392 | /* self-clear floats */
393 |
394 | .group:after {
395 | content: ".";
396 | display: block;
397 | height: 0;
398 | clear: both;
399 | visibility: hidden;
400 | }
401 |
402 | /* IE patches
403 | --------------------------------------------- */
404 |
405 | /* self-clear floats */
406 |
407 | * html .group { /* IE6 */
408 | height: 1%;
409 | }
410 | *:first-child+html .group { /* IE7 */
411 | min-height: 1px;
412 | }
413 |
414 | /* responsiveness
415 | --------------------------------------------- */
416 |
417 | @media screen and (max-width: 700px) {
418 | #logo em {
419 | opacity: 0;
420 | }
421 | div.main {
422 | margin-left: 0;
423 | padding: 0 10px;
424 | }
425 | #nav {
426 | position: static;
427 | left: auto;
428 | width: auto;
429 | padding: 20px;
430 | .rounded;
431 | }
432 | #nav-toggle {
433 | display: none;
434 | }
435 | #nav h2 {
436 | margin-left: 8px;
437 | }
438 | #nav ul {
439 | margin-right: 0;
440 | -webkit-column-count: 2;
441 | -moz-column-count: 2;
442 | column-count: 2;
443 | }
444 | #nav ul li a {
445 | padding: 5px 8px;
446 | .rounded(4px);
447 | }
448 | div#pattern.mod div#pattern-wrap {
449 | padding: 10px 0;
450 | }
451 | div#markup.mod,
452 | div#style.mod {
453 | float: none;
454 | width: 100%;
455 | }
456 | div.mod h4 {
457 | width: auto;
458 | }
459 | }
460 |
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 2, June 1991
3 |
4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 | 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
6 |
7 | Everyone is permitted to copy and distribute verbatim copies
8 | of this license document, but changing it is not allowed.
9 |
10 | Preamble
11 |
12 | The licenses for most software are designed to take away your
13 | freedom to share and change it. By contrast, the GNU General Public
14 | License is intended to guarantee your freedom to share and change free
15 | software--to make sure the software is free for all its users. This
16 | General Public License applies to most of the Free Software
17 | Foundation's software and to any other program whose authors commit to
18 | using it. (Some other Free Software Foundation software is covered by
19 | the GNU Library General Public License instead.) You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | this service if you wish), that you receive source code or can get it
26 | if you want it, that you can change the software or use pieces of it
27 | in new free programs; and that you know you can do these things.
28 |
29 | To protect your rights, we need to make restrictions that forbid
30 | anyone to deny you these rights or to ask you to surrender the rights.
31 | These restrictions translate to certain responsibilities for you if you
32 | distribute copies of the software, or if you modify it.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must give the recipients all the rights that
36 | you have. You must make sure that they, too, receive or can get the
37 | source code. And you must show them these terms so they know their
38 | rights.
39 |
40 | We protect your rights with two steps: (1) copyright the software, and
41 | (2) offer you this license which gives you legal permission to copy,
42 | distribute and/or modify the software.
43 |
44 | Also, for each author's protection and ours, we want to make certain
45 | that everyone understands that there is no warranty for this free
46 | software. If the software is modified by someone else and passed on, we
47 | want its recipients to know that what they have is not the original, so
48 | that any problems introduced by others will not reflect on the original
49 | authors' reputations.
50 |
51 | Finally, any free program is threatened constantly by software
52 | patents. We wish to avoid the danger that redistributors of a free
53 | program will individually obtain patent licenses, in effect making the
54 | program proprietary. To prevent this, we have made it clear that any
55 | patent must be licensed for everyone's free use or not licensed at all.
56 |
57 | The precise terms and conditions for copying, distribution and
58 | modification follow.
59 |
60 | GNU GENERAL PUBLIC LICENSE
61 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
62 |
63 | 0. This License applies to any program or other work which contains
64 | a notice placed by the copyright holder saying it may be distributed
65 | under the terms of this General Public License. The "Program", below,
66 | refers to any such program or work, and a "work based on the Program"
67 | means either the Program or any derivative work under copyright law:
68 | that is to say, a work containing the Program or a portion of it,
69 | either verbatim or with modifications and/or translated into another
70 | language. (Hereinafter, translation is included without limitation in
71 | the term "modification".) Each licensee is addressed as "you".
72 |
73 | Activities other than copying, distribution and modification are not
74 | covered by this License; they are outside its scope. The act of
75 | running the Program is not restricted, and the output from the Program
76 | is covered only if its contents constitute a work based on the
77 | Program (independent of having been made by running the Program).
78 | Whether that is true depends on what the Program does.
79 |
80 | 1. You may copy and distribute verbatim copies of the Program's
81 | source code as you receive it, in any medium, provided that you
82 | conspicuously and appropriately publish on each copy an appropriate
83 | copyright notice and disclaimer of warranty; keep intact all the
84 | notices that refer to this License and to the absence of any warranty;
85 | and give any other recipients of the Program a copy of this License
86 | along with the Program.
87 |
88 | You may charge a fee for the physical act of transferring a copy, and
89 | you may at your option offer warranty protection in exchange for a fee.
90 |
91 | 2. You may modify your copy or copies of the Program or any portion
92 | of it, thus forming a work based on the Program, and copy and
93 | distribute such modifications or work under the terms of Section 1
94 | above, provided that you also meet all of these conditions:
95 |
96 | a) You must cause the modified files to carry prominent notices
97 | stating that you changed the files and the date of any change.
98 |
99 | b) You must cause any work that you distribute or publish, that in
100 | whole or in part contains or is derived from the Program or any
101 | part thereof, to be licensed as a whole at no charge to all third
102 | parties under the terms of this License.
103 |
104 | c) If the modified program normally reads commands interactively
105 | when run, you must cause it, when started running for such
106 | interactive use in the most ordinary way, to print or display an
107 | announcement including an appropriate copyright notice and a
108 | notice that there is no warranty (or else, saying that you provide
109 | a warranty) and that users may redistribute the program under
110 | these conditions, and telling the user how to view a copy of this
111 | License. (Exception: if the Program itself is interactive but
112 | does not normally print such an announcement, your work based on
113 | the Program is not required to print an announcement.)
114 |
115 | These requirements apply to the modified work as a whole. If
116 | identifiable sections of that work are not derived from the Program,
117 | and can be reasonably considered independent and separate works in
118 | themselves, then this License, and its terms, do not apply to those
119 | sections when you distribute them as separate works. But when you
120 | distribute the same sections as part of a whole which is a work based
121 | on the Program, the distribution of the whole must be on the terms of
122 | this License, whose permissions for other licensees extend to the
123 | entire whole, and thus to each and every part regardless of who wrote it.
124 | Thus, it is not the intent of this section to claim rights or contest
125 | your rights to work written entirely by you; rather, the intent is to
126 | exercise the right to control the distribution of derivative or
127 | collective works based on the Program.
128 |
129 | In addition, mere aggregation of another work not based on the Program
130 | with the Program (or with a work based on the Program) on a volume of
131 | a storage or distribution medium does not bring the other work under
132 | the scope of this License.
133 |
134 | 3. You may copy and distribute the Program (or a work based on it,
135 | under Section 2) in object code or executable form under the terms of
136 | Sections 1 and 2 above provided that you also do one of the following:
137 |
138 | a) Accompany it with the complete corresponding machine-readable
139 | source code, which must be distributed under the terms of Sections
140 | 1 and 2 above on a medium customarily used for software interchange; or,
141 |
142 | b) Accompany it with a written offer, valid for at least three
143 | years, to give any third party, for a charge no more than your
144 | cost of physically performing source distribution, a complete
145 | machine-readable copy of the corresponding source code, to be
146 | distributed under the terms of Sections 1 and 2 above on a medium
147 | customarily used for software interchange; or,
148 |
149 | c) Accompany it with the information you received as to the offer
150 | to distribute corresponding source code. (This alternative is
151 | allowed only for noncommercial distribution and only if you
152 | received the program in object code or executable form with such
153 | an offer, in accord with Subsection b above.)
154 |
155 | The source code for a work means the preferred form of the work for
156 | making modifications to it. For an executable work, complete source
157 | code means all the source code for all modules it contains, plus any
158 | associated interface definition files, plus the scripts used to
159 | control compilation and installation of the executable. However, as a
160 | special exception, the source code distributed need not include
161 | anything that is normally distributed (in either source or binary
162 | form) with the major components (compiler, kernel, and so on) of the
163 | operating system on which the executable runs, unless that component
164 | itself accompanies the executable.
165 |
166 | If distribution of executable or object code is made by offering
167 | access to copy from a designated place, then offering equivalent
168 | access to copy the source code from the same place counts as
169 | distribution of the source code, even though third parties are not
170 | compelled to copy the source along with the object code.
171 |
172 | 4. You may not copy, modify, sublicense, or distribute the Program
173 | except as expressly provided under this License. Any attempt
174 | otherwise to copy, modify, sublicense or distribute the Program is
175 | void, and will automatically terminate your rights under this License.
176 | However, parties who have received copies, or rights, from you under
177 | this License will not have their licenses terminated so long as such
178 | parties remain in full compliance.
179 |
180 | 5. You are not required to accept this License, since you have not
181 | signed it. However, nothing else grants you permission to modify or
182 | distribute the Program or its derivative works. These actions are
183 | prohibited by law if you do not accept this License. Therefore, by
184 | modifying or distributing the Program (or any work based on the
185 | Program), you indicate your acceptance of this License to do so, and
186 | all its terms and conditions for copying, distributing or modifying
187 | the Program or works based on it.
188 |
189 | 6. Each time you redistribute the Program (or any work based on the
190 | Program), the recipient automatically receives a license from the
191 | original licensor to copy, distribute or modify the Program subject to
192 | these terms and conditions. You may not impose any further
193 | restrictions on the recipients' exercise of the rights granted herein.
194 | You are not responsible for enforcing compliance by third parties to
195 | this License.
196 |
197 | 7. If, as a consequence of a court judgment or allegation of patent
198 | infringement or for any other reason (not limited to patent issues),
199 | conditions are imposed on you (whether by court order, agreement or
200 | otherwise) that contradict the conditions of this License, they do not
201 | excuse you from the conditions of this License. If you cannot
202 | distribute so as to satisfy simultaneously your obligations under this
203 | License and any other pertinent obligations, then as a consequence you
204 | may not distribute the Program at all. For example, if a patent
205 | license would not permit royalty-free redistribution of the Program by
206 | all those who receive copies directly or indirectly through you, then
207 | the only way you could satisfy both it and this License would be to
208 | refrain entirely from distribution of the Program.
209 |
210 | If any portion of this section is held invalid or unenforceable under
211 | any particular circumstance, the balance of the section is intended to
212 | apply and the section as a whole is intended to apply in other
213 | circumstances.
214 |
215 | It is not the purpose of this section to induce you to infringe any
216 | patents or other property right claims or to contest validity of any
217 | such claims; this section has the sole purpose of protecting the
218 | integrity of the free software distribution system, which is
219 | implemented by public license practices. Many people have made
220 | generous contributions to the wide range of software distributed
221 | through that system in reliance on consistent application of that
222 | system; it is up to the author/donor to decide if he or she is willing
223 | to distribute software through any other system and a licensee cannot
224 | impose that choice.
225 |
226 | This section is intended to make thoroughly clear what is believed to
227 | be a consequence of the rest of this License.
228 |
229 | 8. If the distribution and/or use of the Program is restricted in
230 | certain countries either by patents or by copyrighted interfaces, the
231 | original copyright holder who places the Program under this License
232 | may add an explicit geographical distribution limitation excluding
233 | those countries, so that distribution is permitted only in or among
234 | countries not thus excluded. In such case, this License incorporates
235 | the limitation as if written in the body of this License.
236 |
237 | 9. The Free Software Foundation may publish revised and/or new versions
238 | of the General Public License from time to time. Such new versions will
239 | be similar in spirit to the present version, but may differ in detail to
240 | address new problems or concerns.
241 |
242 | Each version is given a distinguishing version number. If the Program
243 | specifies a version number of this License which applies to it and "any
244 | later version", you have the option of following the terms and conditions
245 | either of that version or of any later version published by the Free
246 | Software Foundation. If the Program does not specify a version number of
247 | this License, you may choose any version ever published by the Free Software
248 | Foundation.
249 |
250 | 10. If you wish to incorporate parts of the Program into other free
251 | programs whose distribution conditions are different, write to the author
252 | to ask for permission. For software which is copyrighted by the Free
253 | Software Foundation, write to the Free Software Foundation; we sometimes
254 | make exceptions for this. Our decision will be guided by the two goals
255 | of preserving the free status of all derivatives of our free software and
256 | of promoting the sharing and reuse of software generally.
257 |
258 | NO WARRANTY
259 |
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268 | REPAIR OR CORRECTION.
269 |
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278 | POSSIBILITY OF SUCH DAMAGES.
279 |
280 | END OF TERMS AND CONDITIONS
281 |
282 |
--------------------------------------------------------------------------------
/functions.php:
--------------------------------------------------------------------------------
1 |
26 | * add_action( 'after_setup_theme', 'my_child_theme_setup' );
27 | * function my_child_theme_setup() {
28 | * // We are providing our own filter for excerpt_length (or using the unfiltered value)
29 | * remove_filter( 'excerpt_length', 'twentyten_excerpt_length' );
30 | * ...
31 | * }
32 | *
33 | *
34 | * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API.
35 | *
36 | * @package WordPress
37 | * @subpackage Twenty_Ten
38 | * @since Twenty Ten 1.0
39 | */
40 |
41 | /**
42 | * Set the content width based on the theme's design and stylesheet.
43 | *
44 | * Used to set the width of images and content. Should be equal to the width the theme
45 | * is designed for, generally via the style.css stylesheet.
46 | */
47 | if ( ! isset( $content_width ) )
48 | $content_width = 640;
49 |
50 | /** Tell WordPress to run twentyten_setup() when the 'after_setup_theme' hook is run. */
51 | add_action( 'after_setup_theme', 'twentyten_setup' );
52 |
53 | if ( ! function_exists( 'twentyten_setup' ) ):
54 | /**
55 | * Sets up theme defaults and registers support for various WordPress features.
56 | *
57 | * Note that this function is hooked into the after_setup_theme hook, which runs
58 | * before the init hook. The init hook is too late for some features, such as indicating
59 | * support post thumbnails.
60 | *
61 | * To override twentyten_setup() in a child theme, add your own twentyten_setup to your child theme's
62 | * functions.php file.
63 | *
64 | * @uses add_theme_support() To add support for post thumbnails and automatic feed links.
65 | * @uses register_nav_menus() To add support for navigation menus.
66 | * @uses add_custom_background() To add support for a custom background.
67 | * @uses add_editor_style() To style the visual editor.
68 | * @uses load_theme_textdomain() For translation/localization support.
69 | * @uses add_custom_image_header() To add support for a custom header.
70 | * @uses register_default_headers() To register the default custom header images provided with the theme.
71 | * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
72 | *
73 | * @since Twenty Ten 1.0
74 | */
75 | function twentyten_setup() {
76 |
77 | // This theme styles the visual editor with editor-style.css to match the theme style.
78 | add_editor_style();
79 |
80 | // Post Format support. You can also use the legacy "gallery" or "asides" (note the plural) categories.
81 | add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
82 |
83 | // This theme uses post thumbnails
84 | add_theme_support( 'post-thumbnails' );
85 |
86 | // Add default posts and comments RSS feed links to head
87 | add_theme_support( 'automatic-feed-links' );
88 |
89 | // Make theme available for translation
90 | // Translations can be filed in the /languages/ directory
91 | load_theme_textdomain( 'twentyten', TEMPLATEPATH . '/languages' );
92 |
93 | $locale = get_locale();
94 | $locale_file = TEMPLATEPATH . "/languages/$locale.php";
95 | if ( is_readable( $locale_file ) )
96 | require_once( $locale_file );
97 |
98 | // This theme uses wp_nav_menu() in one location.
99 | register_nav_menus( array(
100 | 'primary' => __( 'Primary Navigation', 'twentyten' ),
101 | ) );
102 |
103 | // This theme allows users to set a custom background
104 | add_custom_background();
105 |
106 | // Your changeable header business starts here
107 | if ( ! defined( 'HEADER_TEXTCOLOR' ) )
108 | define( 'HEADER_TEXTCOLOR', '' );
109 |
110 | // No CSS, just IMG call. The %s is a placeholder for the theme template directory URI.
111 | if ( ! defined( 'HEADER_IMAGE' ) )
112 | define( 'HEADER_IMAGE', '%s/images/headers/path.jpg' );
113 |
114 | // The height and width of your custom header. You can hook into the theme's own filters to change these values.
115 | // Add a filter to twentyten_header_image_width and twentyten_header_image_height to change these values.
116 | define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyten_header_image_width', 940 ) );
117 | define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyten_header_image_height', 198 ) );
118 |
119 | // We'll be using post thumbnails for custom header images on posts and pages.
120 | // We want them to be 940 pixels wide by 198 pixels tall.
121 | // Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
122 | set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );
123 |
124 | // Don't support text inside the header image.
125 | if ( ! defined( 'NO_HEADER_TEXT' ) )
126 | define( 'NO_HEADER_TEXT', true );
127 |
128 | // Add a way for the custom header to be styled in the admin panel that controls
129 | // custom headers. See twentyten_admin_header_style(), below.
130 | add_custom_image_header( '', 'twentyten_admin_header_style' );
131 |
132 | // ... and thus ends the changeable header business.
133 |
134 | // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.
135 | register_default_headers( array(
136 | 'berries' => array(
137 | 'url' => '%s/images/headers/berries.jpg',
138 | 'thumbnail_url' => '%s/images/headers/berries-thumbnail.jpg',
139 | /* translators: header image description */
140 | 'description' => __( 'Berries', 'twentyten' )
141 | ),
142 | 'cherryblossom' => array(
143 | 'url' => '%s/images/headers/cherryblossoms.jpg',
144 | 'thumbnail_url' => '%s/images/headers/cherryblossoms-thumbnail.jpg',
145 | /* translators: header image description */
146 | 'description' => __( 'Cherry Blossoms', 'twentyten' )
147 | ),
148 | 'concave' => array(
149 | 'url' => '%s/images/headers/concave.jpg',
150 | 'thumbnail_url' => '%s/images/headers/concave-thumbnail.jpg',
151 | /* translators: header image description */
152 | 'description' => __( 'Concave', 'twentyten' )
153 | ),
154 | 'fern' => array(
155 | 'url' => '%s/images/headers/fern.jpg',
156 | 'thumbnail_url' => '%s/images/headers/fern-thumbnail.jpg',
157 | /* translators: header image description */
158 | 'description' => __( 'Fern', 'twentyten' )
159 | ),
160 | 'forestfloor' => array(
161 | 'url' => '%s/images/headers/forestfloor.jpg',
162 | 'thumbnail_url' => '%s/images/headers/forestfloor-thumbnail.jpg',
163 | /* translators: header image description */
164 | 'description' => __( 'Forest Floor', 'twentyten' )
165 | ),
166 | 'inkwell' => array(
167 | 'url' => '%s/images/headers/inkwell.jpg',
168 | 'thumbnail_url' => '%s/images/headers/inkwell-thumbnail.jpg',
169 | /* translators: header image description */
170 | 'description' => __( 'Inkwell', 'twentyten' )
171 | ),
172 | 'path' => array(
173 | 'url' => '%s/images/headers/path.jpg',
174 | 'thumbnail_url' => '%s/images/headers/path-thumbnail.jpg',
175 | /* translators: header image description */
176 | 'description' => __( 'Path', 'twentyten' )
177 | ),
178 | 'sunset' => array(
179 | 'url' => '%s/images/headers/sunset.jpg',
180 | 'thumbnail_url' => '%s/images/headers/sunset-thumbnail.jpg',
181 | /* translators: header image description */
182 | 'description' => __( 'Sunset', 'twentyten' )
183 | )
184 | ) );
185 | }
186 | endif;
187 |
188 | if ( ! function_exists( 'twentyten_admin_header_style' ) ) :
189 | /**
190 | * Styles the header image displayed on the Appearance > Header admin panel.
191 | *
192 | * Referenced via add_custom_image_header() in twentyten_setup().
193 | *
194 | * @since Twenty Ten 1.0
195 | */
196 | function twentyten_admin_header_style() {
197 | ?>
198 |
209 | ' . __( 'Continue reading →', 'twentyten' ) . '';
249 | }
250 |
251 | /**
252 | * Replaces "[...]" (appended to automatically generated excerpts) with an ellipsis and twentyten_continue_reading_link().
253 | *
254 | * To override this in a child theme, remove the filter and add your own
255 | * function tied to the excerpt_more filter hook.
256 | *
257 | * @since Twenty Ten 1.0
258 | * @return string An ellipsis
259 | */
260 | function twentyten_auto_excerpt_more( $more ) {
261 | return ' …' . twentyten_continue_reading_link();
262 | }
263 | add_filter( 'excerpt_more', 'twentyten_auto_excerpt_more' );
264 |
265 | /**
266 | * Adds a pretty "Continue Reading" link to custom post excerpts.
267 | *
268 | * To override this link in a child theme, remove the filter and add your own
269 | * function tied to the get_the_excerpt filter hook.
270 | *
271 | * @since Twenty Ten 1.0
272 | * @return string Excerpt with a pretty "Continue Reading" link
273 | */
274 | function twentyten_custom_excerpt_more( $output ) {
275 | if ( has_excerpt() && ! is_attachment() ) {
276 | $output .= twentyten_continue_reading_link();
277 | }
278 | return $output;
279 | }
280 | add_filter( 'get_the_excerpt', 'twentyten_custom_excerpt_more' );
281 |
282 | /**
283 | * Remove inline styles printed when the gallery shortcode is used.
284 | *
285 | * Galleries are styled by the theme in Twenty Ten's style.css. This is just
286 | * a simple filter call that tells WordPress to not use the default styles.
287 | *
288 | * @since Twenty Ten 1.2
289 | */
290 | add_filter( 'use_default_gallery_style', '__return_false' );
291 |
292 | /**
293 | * Deprecated way to remove inline styles printed when the gallery shortcode is used.
294 | *
295 | * This function is no longer needed or used. Use the use_default_gallery_style
296 | * filter instead, as seen above.
297 | *
298 | * @since Twenty Ten 1.0
299 | * @deprecated Deprecated in Twenty Ten 1.2 for WordPress 3.1
300 | *
301 | * @return string The gallery style filter, with the styles themselves removed.
302 | */
303 | function twentyten_remove_gallery_css( $css ) {
304 | return preg_replace( "##s", '', $css );
305 | }
306 | // Backwards compatibility with WordPress 3.0.
307 | if ( version_compare( $GLOBALS['wp_version'], '3.1', '<' ) )
308 | add_filter( 'gallery_style', 'twentyten_remove_gallery_css' );
309 |
310 | if ( ! function_exists( 'twentyten_comment' ) ) :
311 | /**
312 | * Template for comments and pingbacks.
313 | *
314 | * To override this walker in a child theme without modifying the comments template
315 | * simply create your own twentyten_comment(), and that function will be used instead.
316 | *
317 | * Used as a callback by wp_list_comments() for displaying the comments.
318 | *
319 | * @since Twenty Ten 1.0
320 | */
321 | function twentyten_comment( $comment, $args, $depth ) {
322 | $GLOBALS['comment'] = $comment;
323 | switch ( $comment->comment_type ) :
324 | case '' :
325 | ?>
326 |